Clover2開発日誌

Clover2というJavaのように静的な型を持つRubyのようなコンパイラ+仮想マシンの開発日誌です。LLVMでJITもします。https://github.com/ab25cqにて開発しています。

delegateを入れました。

delegateを入れました。

 

class ClassA {

  def initialize() {

  }

  def show() {

    println("HELLO delegate");

  }

}

 

class ClassB {

  field: delegate ClassA;

  def initialize() {

    self.field = new ClassA();

  }

}

 

a:ClassB = new ClassB();

a.show();

 

みたいな感じです。

また詳しくwikiに書きます。移譲は継承の代わりにもなります。

Clover2には継承はありませんが、移譲が代わりとなってくれるでしょう。

def showはClassBで定義されているのでインターフェースにも代入できます。

移譲のメソッドが衝突した場合は後にdelegate指定したフィールドが優先されます。もし先に定義したフィールドを優先したい場合はそのようなメソッドを定義すれば、そちらが優先されます。

 

これは誰の真似でもなくて僕自身のアイデアです。もう、そのような機能を入れた言語はあるかもしれませんが。

継承に対する重要な切り札です。継承は悪です。移譲こそ、継承より上の概念です。

 

それでは。

enjoy programing!