swift - 为什么这个基本类型扩展不起作用?

标签 swift generics extension-methods

尝试使用扩展,但在使以下功能正常工作时遇到问题:

let value = -13
abs(value)

extension Int {
    var abs:Int {
        return abs(self) // -> Cannot invoke 'abs' with an argument list of type '(Int)'
    }
}

value.abs

编译错误很奇怪,因为它明显地以 Int 作为参数直接运行上面的 abs() 函数。我猜我还有一些灯泡可以触发泛型。启发我。

最佳答案

Swift 编译器会混淆您将 abs 变量用作函数,它不能这样做。现在您可以查看所有答案并重命名您的变量,但这些并不能深入了解 Swift 函数的工作原理。

Swift 自动导入 Swift 框架,它定义了它的静态函数。要使用这些函数,您通常不需要指定它来自框架,但在这种情况下,您应该指定您要使用 Swiftabs 方法框架。

所以在所有的解释之后,这是你的代码,它可以工作:

let value = -13
abs(value)

extension Int {
    var abs: Int {
        return Swift.abs(self)
    }
}

value.abs

关于swift - 为什么这个基本类型扩展不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30064138/

相关文章:

swift - 如何在 Swift 2 Xcode 7 中生成随机数?

ios - 点击 Collection View 中的按钮后自定义相机 View

java - 类型删除和重写泛型方法

JavaScript 扩展类型返回

c# - C# dll 中的扩展方法不能作为 VB.NET 中的扩展使用

ios - 保存图像然后在 Swift (iOS) 中加载它

swift - 在 iOS 8 中使用已编译的 Swift 2

德尔福XE : class constructor doesn't get called in a class using generics

generics - typescript 中的 "Generic type ' Feature<T >' requires 1 type argument(s)"是什么意思?

iOS Safari Action 扩展 kUTTypePropertyList 为零