2


1

現在ミックスインをサポートしている言語は何ですか?

もちろん、RubyとSassですが、他に何かありますか?

6 Answer


4


Wikiにはリストがあります

引用するには:

ミックスインを使用するプログラミング言語

_ フレーバーとCLOS(Common Lispの一部)以外に、ミックスインを使用する言語は次のとおりです。 _

* ColdFusion (Class based using includes and Object based
  by assigning methods from one object to another at runtime)
* Curl(with Curl RTE)
* D (called "template mixins")
* Factor[citation needed]
* Fantom
* Ioke
* JavaFX Script
* JavaScript
* Object REXX
* OpenLaszlo
* Perl[3]
* PLT Scheme (mixins documentation)
* Python
* Ruby
* Scala
* Smalltalk
* Strongtalk
* Vala
* Visual Dataflex
* XOTcl/TclOO (object systems for Tcl)[4]

_ ECMAScript(一般にJavaScriptと呼ばれる)のような一部の言語は、言語レベルでミックスインをサポートしていませんが、実行時にメソッドをあるオブジェクトから別のオブジェクトにコピーすることで簡単に模倣できます。 これは静的に型付けされた言語では不可能であり、オブジェクトの署名がコンパイル時に修正されることに注意してください。 _


1


Dのバージョン1と2の両方は、http://www.digitalmars.com/d/2.0/mixin.html [mixins]をサポートしています。


1


_whyのhttp://github.com/fogus/potion[potion]言語が思い浮かびます。 考え方は、オブジェクトには状態とメソッドがあるということです。 ほとんどの言語では、状態はオブジェクトで発生し、メソッドはクラスで発生します。 ポーションでは、オブジェクトには状態のみがあり、メソッドはミックスインで完全に処理されます。

READMEから引用するには

_ _ すべてがオブジェクトです。 ミックスインもオブジェクトです。 そして、もちろん、閉鎖はオブジェクトです。

ただし、オブジェクトはすべてではありません。 彼らはミキシンなしで使いやすいです。 _ _

余談ですが、理由が懐かしいです。 このようなワイルドなことをする人がもっと必要です


0


まあ、もちろんhttp://en.wikipedia.org/wiki/Flavors_%28programming_language%29[Flavors]。 これはhttp://en.wikipedia.org/wiki/Common_Lisp_Object_System[CLOS]に変わりました。


0


JavaScriptはそれらをサポートします。 オブジェクトのプロトタイプに関数/フィールドをいつでも追加できます。


0


Perlのhttp://search.cpan.org/~rkinyon/Perl6-Roles-0.01/lib/Perl6/Roles.pm[Roles]はmixinと呼ばれます。