構造的サブ型について
Animal {type SuitableFood = Grass}
基底型(Animal)の型を 規定(Refine)する。
そして、基底型が指定されてないことも(その場合AnyRefが基底型になるそうだ)
def using[T <: {def colse():Unit},S] (obj:T) (operation:T => S) = {
val result =operation(obj)
obj.close()
result
}
このusingを使えば、 {def colse():Unit}で規定(close()メソッドを持つ型だけ)されたものをサポートするようにできるとか。上限境界を使っている。
これをうまく使えば、応用範囲は広いように思う。が、使いこなせるには、相当な慣れが必要なように思う。
0 件のコメント:
コメントを投稿