swift - 如何为集合类型编写扩展

标签 swift

extension Array {
    func sum() -> Int {
        var sum = 0
        for num in self {
            sum += num
        }
        return sum
    }
}

[1,2,3].sum()

这段代码展示了我想做什么。虽然我在这一行收到错误:sum += num。我得到的错误是:找不到接受提供的参数的“+=”的重载

我假设这个错误与 Array 可以包含许多不同类型的事实有关,而不仅仅是 Int,所以它被窃听了。但是怎么修呢?

最佳答案

目前没有办法只扩展特定类型的 Array (在本例中为 Array<Int>)。在 bugreport.apple.com 上提交申请是一个很好的请求

同时你可以这样做(不是在扩展中):

func sum(ints:Int[]) -> Int {
    return ints.reduce(0, +)
}

关于swift - 如何为集合类型编写扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24008827/

相关文章:

ios - Swift 中的泛型和 EXC_BAD_ACCESS

ios - 以编程方式创建 UITabBarController subview 而不加载 UITabBarItem 图像

ios - 什么时候需要切换 rootViewController

ios - Firebase 数据库更改时在 iOS 中触发通知

ios - 按下取消按钮时隐藏搜索栏,并调整导航栏的大小

ios - 处理后 AVFoundation 相机图像质量下降

ios - 如何将 Swift 中的变量值传递给 HTML?

ios - 没有这样的模块 'FBSDKLoginKit'

ios - 如何将目标添加到键盘完成/转到/搜索按钮?

ios - 在 Swift/iOS 中使用前初始化类属性