6

タイプのデザインについて質問があります。Int が Ordered トレイトを拡張しないのはなぜですか。Int は自然に順序付けられていませんか?

代わりに、scala ライブラリは、Int を Ordered[Int] に変換する暗黙の「orderer」メソッドを提供します。ここで行われているデザインの選択は何ですか?

書籍「Programming in Scala」からの例

def maxListImpParm[T <% Ordered[T]](elements:List[T]):T= ...


maxListImpParm(List(1,5,10,3)) // works because of implicit methods
4

1 に答える 1

9

Int (および AnyVal から継承された他のいくつかのクラス) は一時的なものであるため、実行時には通常、クラス (したがって継承) の概念をまったく持たないプリミティブ値によって表されます。もちろん、アイテムをコレクションに入れるときの完全な参照クラス インスタンスへの Int ボクシングなどの例外はありますが、typeclass は 1 つの普遍的なソリューションを提供します。さらに、型クラスは継承よりも柔軟です

于 2013-04-14T15:56:24.303 に答える