ios - Swift 编译器错误 : “Cannot invoke ' map' with an argument list of type '((_) -> _)' ”

标签 ios swift higher-order-functions

我有一个要映射的范围,但出现错误

“无法使用类型为‘((_) -> _)’的参数列表调用‘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/

相关文章:

ios - 重用后,tableview 单元格的背景层错误

python - 高阶函数与循环——运行时间和内存效率?

arrays - 如何展平自定义对象 [[CustomModel?]] 的数组?

iOS - 简单的 SSL 套接字连接

ios - 尝试从字典中检索字符串时出现 "[__NSArrayM objectForKey:]: unrecognized selector"

ios - 当使用 UITableView 选择一行时,如何显示不同的结果?

arrays - Swift:标签不显示

iphone - 更新项目中的所有 localized.strings

html - 固定宽度 div 中的居中按钮在 ipad 中向左移动

prolog - 是否有不需要类型系统的更高阶 Prolog?