scr*_*rrr 3 core-graphics swift
苹果定义的 有什么特别的原因CGFloat.zero吗?我们应该什么时候使用它?和它有什么不同0?
通用算法建立在协议之上,让我们可以编写适用于多种类型的通用代码。所述AdditiveArithmetic协议要求相符的类型具有零值(.zero),其可以用于需要该算法。有了它,您就可以编写一个可以处理多种不同类型整数(Int16、Int32、Int...)、浮点数(Double、Float、CGFloat...)甚至向量的函数。任何具有算术零、“加法和减法”的概念并且可以等式(因为 AdditiveArithmetic 需要 Equatable)的东西都可以参与。
AdditiveArithmetic 不要求类型符合 ExpressibleByIntegerLiteral,这意味着可能无法使用0符号创建类型。向量类型通常不会以这种方式初始化,但仍然具有“零值”。
作为如何使用它的示例,请考虑sum(),它可以处理整数、浮点数、向量或任何您想要符合 AdditiveArithmetic 的自定义类型:
extension Sequence where Element: AdditiveArithmetic {
func sum() -> Element {
reduce(.zero, +)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |