Swift:通用幂函数作为中缀运算符

标签 swift generics

下面是answer关于如何为 Int 数字添加幂运算符的原始问题:

infix operator ^^ { associativity left precedence 160 }
func ^^ (radix: Int, power: Int) -> Int {
    return Int(pow(CGFloat(radix), CGFloat(power)))
}

如何概括这一点,使其适用于 DoubleFloatInt

最佳答案

你不能“概括”它。您必须分别为每种类型实现它。

如果您查看 Swift header ,您会发现这正是 Swift 本身对内置运算符(例如 +)所做的事情。没有“通用”+ 函数;每种数字类型都有一个 + 函数。

因此:

infix operator ^^ { associativity left precedence 160 }
func ^^ (radix: Int, power: Int) -> Int {
    return Int(pow(CGFloat(radix), CGFloat(power)))
}
func ^^ (radix: Double, power: Double) -> Double {
    return Double(pow(CGFloat(radix), CGFloat(power)))
}
// ... and so on for as many types as you like ...

关于Swift:通用幂函数作为中缀运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31464953/

相关文章:

ios - UITableViewCell 项目选择

swift - UIPickerView 中的索引行 didSelectRow 选择

Swift filterContentForSearchText

c# - 不能同时指定约束类和 0​​x104567910 或 'class' 约束

c# - 如何覆盖 ToString() 并实现泛型?

swift 如何使渐变层从不同的位置开始

ios - 使用 SwiftUI 成功登录后导航

Java:将泛型类型传递给另一个泛型类型类

c# - 如何修复此错误?无效方差 : The type parameter 'T' must be invariantly valid on

c# - 基于字典排序 IEnumerable<T> 对象