Ven*_*eri 2 spaceship-operator swift
来自维基百科:
与传统的相等运算符不同,传统的相等运算符将返回true或false,具体取决于参数是相等还是不相等,spaceship运算符将返回1,0或-1,具体取决于左参数相对于right参数的值.如果left参数大于right参数,则运算符返回1.如果left参数小于right参数,则运算符返回-1.如果两个参数相等,则运算符返回0.
宇宙飞船运营商主要用于排序比较.
mem*_*ons 12
Swift没有内置的太空飞船运营商,但在swift中创建新的运营商是微不足道的.让我们创建一个新的运算符,它返回一个enum而不是Int- 魔术数字是坏的,我们不应该将它们用于强类型语言的返回类型.在我们处理它时,让我们利用Swift的Unicode支持,并使用←,→,&make使枚举支持成为结果的可视指示器:
enum Spaceship
{
case ? // LeftIsGreaterThanRight
case ? // LeftIsLessThanRight
case ? // LeftIsEqualToRight
}
operator infix <=> {}
@infix func <=> <T: Comparable> (left: T, right: T) -> Spaceship {
if left < right { return SpaceShip.?}
if left > right { return SpaceShip.?}
return Spaceship.?;
}
Run Code Online (Sandbox Code Playgroud)
现在您可以像这样使用new运算符
if someInt <=> someOtherInt == ?
{
// take off!
}
Run Code Online (Sandbox Code Playgroud)
如果你坚持使用幻数作为比较结果的值(我真的,真的鼓励你不是在做雨燕),然后在这里:
@infix func <=><T: Comparable> (left: T, right: T) -> Int {
if left < right { return -1 }
if left > right { return 1 }
return 0
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1094 次 |
| 最近记录: |