ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

Scala typeと構造的部分型

2011-01-07 05:33:04 | PG(Scala)

Scalaのtype(別名定義)についてメモ。
C言語のtypedefに相当する構文。これ欲しかったんだよね~!
なんでJavaには無いんだ。

ちなみにメモしたページのURLはtype.html。
Scalaの「type」という構文について書く前は、Int等の基本的な型についてメモするページだった。
これはJavaの型(プリミティブ型など)をメモしたページがtype.htmlだったので、それに合わせたもの。
しかしScalaではtypeという構文はあるし基本的な型はAnyVal配下だったりするので、基本的な型についてはany.htmlというページを作って、既にそちらに移行済み。

あと、構造的部分型についてもメモ。
自分が初めてこれを目にした時のつづりは「structual subtyping」だったのだが、「structural subtyping」が正しい気がする。「構造」はstructureだしなぁ。(辞書にはstructuralしか載っていない。しかしstructualが新しい概念を表す造語という可能性はある)
Javaなら同じメソッド呼び出しとして扱うならインターフェースを定義してそれぞれのクラスに実装させるところだが、構造的部分型では、同じシグニチャーでありさえすれば呼び出せる。
ほほう。確かにこれは便利な場面がありそうだ。
Javaで例えれば、DAO用のEntity・中間データ用のValueObject/JavaBeans・画面用のForm等、同じインターフェースを実装させるのはおかしいけど同じ名前を持つセッター・ゲッターメソッドが共通に扱えるということだ。
つまり、異なるテーブルだと異なるクラスを自動生成するようなフレームワーク(泣)を使っている場合(ソースを毎回自動生成するから、異なるクラスを同じように扱いたくてもインターフェースを実装させたりとか出来ない)、同名項目のセッター・ゲッターが共通に扱えるということだ!こ、これは欲しい!ぜひJDK1.4にも導入してくれ(爆)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする