Posts

Post not yet marked as solved
2 Replies
141 Views
I am having a problem with named captures when build with a Regex Builder. The following code is a simplistic example of the problem that works using an "ordinary" Regex. but when the same regular regex is created with a Regex Builder, it works when using group numbers, but it raises the following typing problem when using capture names (last lines) Cannot infer type of closure parameter 'm' without a type annotation // named captures and use with a Regex string to twiggle every alternate chars let pat = /(?P<a>.)(?P<b>.)/ "abcdef".replacing(pat,with:{m in "\(m.b)\(m.a)"}) // the same Regex but using a Regex Builder let a = Reference(Substring.self) let b = Reference(Substring.self) let patRB = Regex { Capture(as: a) {.any} Capture(as: b) {.any} } // OK when using capture group numbers "abcdef".replacing(patRB,with:{m in "\(m.2)\(m.1)"}) // compile error when using group names "abcdef".replacing(patRB,with:{m in "\(m.b)\(m.a)"}) The following shows the output strings in a Playground Any hints on what is wrong or on the correct way to add typing information to the closure. Thanks
Posted Last updated
.