2014年12月14日日曜日

scalaスケーラブルプログラミング P393

構造的サブ型について
 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 件のコメント:

コメントを投稿