「mixin と trait の違い」の自己解釈

とある private な slack で「traitとmixinは似ているようで違うようだな」というのを見かけたので。
0
上白沢しとりー@マヨネーズ係 @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