Swift compiler error: “Cannot invoke 'map' with an argument list of type '((_) -> _)'”
Swift compiler error: “Cannot invoke 'map' with an argument list of type '((_) -> _)'”
我有一个要映射的范围,但出现错误
“Cannot invoke 'map' with an argument list of type '((_) -> _)'”
代码如下所示
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
}
}
如果我取出闭包中的所有内容,只取出 return "",那么编译器不会报错。但是,即使我添加了 return 空字符串以外的一行,编译器也会报错,例如 for:
let patterns = (0...5).map { verseNum in
let verseNumberStartPattern = "\"verse-num\">\(verseNum)</span>(?:\s?<span>)?(.*?)<"
return ""
}
我是不是漏掉了什么?
Swift 不能每次都从上下文推断类型。如果它无法推断类型,则必须显式键入它们,在本例中为 return type:
let patterns = (0...5).map { verseNum -> String in
在这种情况下,我相信 Swift 应该能够推断出类型,所以它可能是一个错误。
我有一个要映射的范围,但出现错误
“Cannot invoke 'map' with an argument list of type '((_) -> _)'”
代码如下所示
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
}
}
如果我取出闭包中的所有内容,只取出 return "",那么编译器不会报错。但是,即使我添加了 return 空字符串以外的一行,编译器也会报错,例如 for:
let patterns = (0...5).map { verseNum in
let verseNumberStartPattern = "\"verse-num\">\(verseNum)</span>(?:\s?<span>)?(.*?)<"
return ""
}
我是不是漏掉了什么?
Swift 不能每次都从上下文推断类型。如果它无法推断类型,则必须显式键入它们,在本例中为 return type:
let patterns = (0...5).map { verseNum -> String in
在这种情况下,我相信 Swift 应该能够推断出类型,所以它可能是一个错误。