gpt4 book ai didi

ios - 在 Swift 中声明采用符合 “can be multiplied” 的泛型类型的函数

转载 作者:可可西里 更新时间:2023-11-01 00:38:18 25 4
gpt4 key购买 nike

如何在 Swift 中声明采用符合“可以相乘”的泛型类型的函数?

例如:

 func sq <T: "Can be multipied">(x: T) -> T {
return x*x
}

这样我就可以计算 Float、Double、CGFloat 等的平方……这可能吗?

最佳答案

您可以像这样定义自己的协议(protocol):

protocol Multipliable {
func *(lhs: Self, rhs: Self) -> Self
}

func sq<T: Multipliable>(value:T) -> T {
return value * value
}

extension Int: Multipliable {}
extension Double: Multipliable {}

sq(10) // -> 100
sq(10.0) // -> 100.0

我相信你必须扩展你想要符合这个协议(protocol)的每个类,我不知道有什么方法可以让它在不使用扩展的情况下工作。

这是一篇关于Equatable 协议(protocol)实现的有趣文章:

http://nshipster.com/swift-default-protocol-implementations/

关于ios - 在 Swift 中声明采用符合 “can be multiplied” 的泛型类型的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25674604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com