ios - and - swift 4 array filter
Error del compilador Swift: "No se puede invocar ''mapa'' con una lista de argumentos de tipo ''((_)->_)''" (1)
Tengo un rango que estoy intentando mapear, pero recibo el error.
“Cannot invoke ''map'' with an argument list of type ''((_) -> _)''”
Así es como se ve el código
let patterns = (0...5).map { verseNum in
let verseNumberStartPattern = "/"verse-num/">/(verseNum)</span>(?://s?<span>)?(.*?)<"
let chapterStartPattern = "/"chapter-num/">//s/(parsedVerse.chapterStart)//s</span>"
if verseNum == 1 {
return chapterStartPattern + "(.*?)<"
} else {
return chapterStartPattern + "(?:.*?)" + verseNumberStartPattern
}
}
Si saco todo lo que está dentro del cierre y simplemente regreso "", el compilador no se queja. Sin embargo, incluso si agrego una línea que no sea la cadena vacía de retorno, el compilador se queja, por ejemplo:
let patterns = (0...5).map { verseNum in
let verseNumberStartPattern = "/"verse-num/">/(verseNum)</span>(?://s?<span>)?(.*?)<"
return ""
}
¿Me estoy perdiendo de algo?
Swift no puede inferir tipos del contexto cada vez. Si no puede inferir tipos, debe escribirlos explícitamente, en este caso el tipo de retorno:
let patterns = (0...5).map { verseNum -> String in
En este caso, creo que Swift debería poder inferir el tipo, por lo que podría ser un error.