2

Josh Suerethの (素晴らしい) 投稿A Generic Quicksort in Scalaを読んでいました。特に興味深いのは、コレクションの型推論の延期に関する部分です。

これは非コレクションにも当てはまるのではないかと思います。次の 2 つの方法でFoo[T,O]

def sort1[T, O](from: T, to: T)(implicit ev: O <:< Ordering[T], ord: O):Foo[T,O] = {
   ...
}

def sort2[T, O <: Ordering[Int]](from: T, to: T)(implicit ord: O):Foo[T,O] = {
   ...
}

2 つの方法のうち、どちらが好まれますか。また、その理由は何ですか?

sort2(2,5)sort1(2,5)あいまいな暗黙的な解決エラーがあるため、コンパイラーはより多くの暗黙的なものを見つけたようです。

4

2 に答える 2

1

確かに、これは直感的ではないように思えます。

その理由は、sort1 が O に対する制約を定義していないため、「ord: O」はあいまいです。(最初の暗黙的なパラメーターの制約は、'ev' 型の制約のみを定義します)。

それが役に立てば幸い :)

于 2013-08-12T08:45:24.120 に答える