- オブジェクト指向は愚かな考え。この世は計算式 [転載禁止]©2ch.net
988 :デフォルトの名無しさん[sage]:2015/12/15(火) 11:47:16.73 ID:rnQ5rq5D - ミックスインの実例をRubyのモジュールしか知らないというのがちょっと狭すぎるのでは?
ミックスインというのはクラスやそれに準ずるエンティティ(抽象クラスやRubyならモジュール)を 継承パスに挿入することで実現する多重継承のひとつの手法で、Scalaのトレイトもその範疇。 対して、本来のトレイトというのは端的には、通常はクラスの一部であるメソッド辞書(メソッドの集合)を取り出して エンティティにしたようなもので、継承パスとは無関係。クラスに組み込む(useする)ことで使用し、 複数useされた場合は合成無名トレイトが作られ(フラット化)、あらためてそれがuseされる。 この無名トレイトが合成されるときにトレイト間にコンフリクトがあれば検知されるから、 それを明示的に解消しないとコンパイルが通らない、というところがポイント。 参考まで、Scalaのトレイトと元ネタのシェルリらのトレイトとの関係についてScala設計者の見解は次のような感じ。 Unlike the original trait proposal [29], traits in Scala are not different from classes. [29] N. Sch?rli, S. Ducasse, O. Nierstrasz, and A. Black. Traits: Composable units of behavior. In Proceedings of the 17th European Conference on Object-Oriented Programming, Darmstadt, Germany, June 2003. http://www.bytelabs.org/pub/tpl/slides/sm@lausanne/expressionProblem.pdf
|
|