Swift3关于标准函数max的一个错误

问题

最近在看函数式编程这本书,在图表这一章时发现了一个错误,代码如下:

  extension Sequence where Iterator.Element == CGFloat {
    func normalize() -> [CGFloat] {
        let maxVal = self.reduce(0) { max($0, $1) }
        return self.map { $0 / maxVal }
    }
}

错误:

05435F02-968C-4E16-91A7-849FDC1A6257.png

解决方法

原因是在闭包里面编译器自动识别的是本地的函数,没有在标准库中搜寻这个函数,添加一个Swift就可以解决这个问题。详细的可以在stackoverflow中可以看到

stackoverflow:https://stackoverflow.com/questions/39602298/swift-3-0-compiler-error-when-calling-global-func-mintt-t-in-array-or-dicti

BUG:https://bugs.swift.org/browse/SR-2450

extension Sequence where Iterator.Element == CGFloat {
    func normalize() -> [CGFloat] {
        let maxVal = self.reduce(0) { Swift.max($0, $1) }
        return self.map { $0 / maxVal }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容