私の同僚の集まりで、私は新しいプログラミング言語を設計しています。私たちはターゲット言語としてエリクシルを検討しています。しかし、言語は主にScalaの構文とセマンティクスに基づいているため、何らかの方法で継承を許可する必要があります。エリクシルでの俳優継承のシミュレーション
しかし、クラスではなく、その場所にアクターを使用することが考えられますが、興味深い問題が生じます。エリクシルの関数を使って、クラスライクな継承をどのようにシミュレートしますか?つまり、何らかの形で他の関数のreceiver
パターンを継承することは可能でしょうか?
A-ラこの:
def io_port do
receive do
{:transmit, data} -> # do stuff with data
{:receive, data} -> # do other stuff with data
end
end
def thunderbolt, extends: io_port do
receive do # also accepts all the same messages io_port does
{:display, data} -> # same story again
end
end
私はあなたがエリクサーのプロトコルを見ることをお勧めします。 http://elixir-lang.org/getting-started/protocols.html –
さらに、Elixirの 'use'マクロをチェックしてください:http://elixir-lang.org/getting-started/alias-require-and-import.html #つかいます。 Rubyの継承やミックスインとよく似ています。言い換えれば、 'use'マクロの実装を見て、あなたが望む言語機能を与える独自のマクロを実装するためのアイディアを得ることができます。 –
私は 'use'マクロもお勧めします。 –