我有一个要映射的范围,但出现错误
“无法使用类型为‘((_) -> _)’的参数列表调用‘map’”
代码是这样的
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
}
}
如果我取出闭包中的所有内容并只返回“”,那么编译器不会报错。但是,即使我添加一行而不是返回空字符串,编译器也会报错,例如 for:
let patterns = (0...5).map { verseNum in
let verseNumberStartPattern = "\"verse-num\">\(verseNum)</span>(?:\\s?<span>)?(.*?)<"
return ""
}
我是不是漏掉了什么?
最佳答案
Swift 不能每次都从上下文中推断类型。如果它无法推断类型,则必须显式键入它们,在本例中为返回类型:
let patterns = (0...5).map { verseNum -> String in
在这种情况下,我相信 Swift 应该能够推断出类型,所以它可能是一个错误。
关于ios - Swift 编译器错误 : “Cannot invoke ' map' with an argument list of type '((_) -> _)' ”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29953390/