はオペレータワイズ所定のパラメータbarlowerBoundとupperBound同じ抽象型Barのすべてされた状態で比較するメソッドfoo下のコードを考えます。 trait Foo {
type Bar <: Ordered[Bar]
val lowerBound: Bar
val upperBound: Bar
def foo(bar: Bar) = b
抽象化を表現するには2つの方法があります。 abstract class Buffer {
type T
val element: T
}
ではなく、 abstract class Buffer[T] {
val element: T
}
私は、異なる状況で異なるアプローチを使用することの有用性を理解しています。 しかし、抽象型のバージョンを汎用バージョン
パス依存型をリフレクションで使用すると、「基底型」と一致する場合でも型の不一致エラーが発生します。これらの「非基底型」とは何か、「基礎型」の代わりにそれらをチェックするのはなぜですか? 以下のコードでは、compareメソッドは、引数として同じタイプのサブクラスAのみを受け入れるようにします。エラーは最後の行にあります。私はこのエラーを取得する最後の行に abstract class A(val