我正在尝试映射一个范围,但出现错误
“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
        }
    }

如果我取出闭包内的所有内容并仅返回“”,那么编译器不会抱怨。但是,即使我添加一行而不是返回空字符串,编译器也会抱怨,例如:
    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应该能够推断出类型,因此可能是一个错误。

07-27 13:33