Ho un intervallo su cui sto cercando di mappare, ma sto ricevendo l'erroreErrore del compilatore Swift: "Impossibile richiamare 'mappa' con un elenco di argomenti di tipo '((_) -> _)'"
“Cannot invoke 'map' with an argument list of type '((_) -> _)'”
Ecco ciò che il codice è simile
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
}
}
Se prendo tutto all'interno della chiusura e appena ritorno "", quindi il compilatore non si lamenta. Tuttavia, anche se aggiungo una linea diversa da quella di ritorno stringa vuota, allora il compilatore si lamenta, come ad esempio per:
let patterns = (0...5).map { verseNum in
let verseNumberStartPattern = "\"verse-num\">\(verseNum)</span>(?:\\s?<span>)?(.*?)<"
return ""
}
mi manca qualcosa qui?
che era, grazie !! – tkuichooseyou
Vorrei aggiungere che questo è veramente un bug nell'inferenza di tipo di Swift, piuttosto che un modo in cui deve essere _has_. 'verseNum' dovrebbe essere deducibile dall'intervallo e il valore restituito dalle dichiarazioni di ritorno. –
Inoltre, se si dispone di una sottoclasse, sarà necessario utilizzare il nome del tipo di classe base, quindi chiedere nuovamente l'oggetto "as!" la tua sottoclasse. –