タグ

ブックマーク / qiita.com/sumim (1)

  • Smalltalk・PHPのトレイトとRuby・Scalaのミックスインの違い - Qiita

    シェルリ(Schärli)が発案して Smalltalk でその実効を試したトレイト(Traits。エンティティとしては trait)はちょっとわかりにくい言語機能なので Ruby のモジュールや Scala のトレイト(これまた紛らわしい名前…)に代表されるミックスインと比較してみましょう。 まず、ミックスインというのは Ruby で話題にはなりましたが特に新しい機構というわけではなく、むしろもっとも古く、オーソドックスな多重継承機構です。クラスまたはクラスに準ずるエンティティ(Ruby ならモジュール、Scala ならトレイト(名称詐欺!)、抽象クラスなど、インスタンス生成能を持たないクラス様のもの)を継承パスに任意の数を挿入できる機構がミックスインです。 それに対して、トレイトは継承機構とはまったく関係ないところで機能します。端的には、来であればクラスの一部であるメソッド辞書(ある

    Smalltalk・PHPのトレイトとRuby・Scalaのミックスインの違い - Qiita
    masa8aurum
    masa8aurum 2018/02/09
    Scala の `trait` は実は mix-in では?という話が含まれる。コメントも読む。
  • 1