example array and ios swift higher-order-functions

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.