Swift erreur de compilateur: “Ne peut pas invoquer la "carte" avec une liste d'arguments de type '((_) -> _)'”
J'ai une série que je suis en train de carte, mais j'obtiens le message d'erreur
“Cannot invoke 'map' with an argument list of type '((_) -> _)'”
Voici à quoi ressemble le code
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 je sors tout à l'intérieur de la clôture et le juste retour "", alors le compilateur n'a pas à se plaindre. Cependant, même si j'ajoute une ligne autre que la renvoie la chaîne vide, alors le compilateur se plaint, comme pour:
let patterns = (0...5).map { verseNum in
let verseNumberStartPattern = "\"verse-num\">\(verseNum)</span>(?:\\s?<span>)?(.*?)<"
return ""
}
Suis-je manqué quelque chose?
Vous devez vous connecter pour publier un commentaire.
Swift ne pouvez pas déduire des types de contexte à chaque fois. Si il ne peut pas inférer des types, vous devez taper explicitement, dans ce cas, le type de retour:
Dans ce cas, je pense que Swift devrait être en mesure de déduire le type de sorte qu'il peut-être un bug.
verseNum
devrait être résultant de la gamme, et la valeur de retour de retour des déclarations.(0...23).map { String(format: "%02d", $0) }
code de Travail:(0...23).map { hour -> String in String(format: "%02d", hour) }