「mixin と trait の違い」の自己解釈
とある private な slack で「traitとmixinは似ているようで違うようだな」というのを見かけたので。
上白沢しとりー@マヨネーズ係
@ndxbn
「mixin と trait は違う」に対して、実用すると何が違うのってなるのだけれど、mixin は静的に、trait は動的に、多重継承っぽいものを実現しているって感じだと思ってる。(mixin と trait を明確に区別して両方を実装している言語を知らないので、答え合わせができない)
2019-06-24 19:06:07
上白沢しとりー@マヨネーズ係
@ndxbn
例えば、trait である PHP の場合、 `use $Module;` みたいなのが(できるかどうかは別として)許されるが、mixin である ruby の場合は許されない。
2019-06-24 19:06:57
上白沢しとりー@マヨネーズ係
@ndxbn
mixin で挿入されたものはコンパイル時に解決されるのに対して、trait で挿入されたものは実行時(プレ実行時)に解決される、だと思ってる。
2019-06-24 19:09:22
リンク
Qiita
Smalltalk・PHPのトレイトとRuby・Scalaのミックスインの違い - Qiita
シェルリ(Schärli)が発案して Smalltalk でその実効を試したトレイト(Traits。エンティティとしては trait)はちょっとわかりにくい言語機能なので Ruby のモジュールや Scala のトレイト(これまた紛ら...
8 users