この質問はおそらくかなりばかげていますが、私は例を見つけることができず、それを理解することもできません。
Person
2つのクラスを姓、名、ミドルネームの順に比較したいと思います。これを行うための頭の痛い方法は次のとおりです。
def compare(that: Person): Int = {
val last: Int = lastName.compare(that.lastName)
if (last != 0) last
else {
val first: Int = firstName.compare(that.firstName)
if (first != 0) first
else middleName.compare(that.middleName)
}
これを行うにはもっと賢い方法があることは知っていますが(おそらくを使用してOrdering
)、それに指を置くことはできません。
トッド
Orderingで正しいものにアクセスする方法を理解した後、これを理解しました。
def compare(that: Person): Int = {
Ordering.Tuple3(Ordering.String, Ordering.String, Ordering.String).compare(
(lastName, firstName, middleName),
(that.lastName, that.firstName, that.middleName))
}
私はより少ない明示で逃げることができるとかなり確信していますが、これは機能し、適度にコンパクトです。