ソート処理を書いていたんですが、複雑なソートになると記述が非常にめんどくさくって。
rubyやphpにある宇宙船演算子が欲しいんですが……swiftにはない!
ないけれども、新しく実装することは出来る。ならやるしかない
この記事でも参考があるんですが、swift4になると動かなくなるので。
実装例!
ufo.swift
infix operator <=>: UfoPrecedence
precedencegroup UfoPrecedence {
associativity: left
}
public func <=> <T: Comparable>(lhs: T, rhs: T) -> Int {
if (lhs == rhs) {
return 0
}
return lhs > rhs ? 1 : -1
}
実行結果
cattle_mutilation.swift
0 <=> 1 // -1
1 <=> 1 // 0
2 <=> 1 // 1
これで楽々ソート処理に!