swift4で宇宙船演算子を実装してufo気分を味わう
ソート処理を書いていたんですが、複雑なソートになると記述が非常にめんどくさくって。
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
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
これで楽々ソート処理に!
Author And Source
この問題について(swift4で宇宙船演算子を実装してufo気分を味わう), 我々は、より多くの情報をここで見つけました https://qiita.com/fumihiko-hidaka/items/2d91367bc13366760d30著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .