3

很明显 Ruby 和 Sass,但还有哪些其他的呢?

4

6 回答 6

4

维基有一个列表

http://en.wikipedia.org/wiki/Mixin#Programming_languages_that_use_mixins

去引用:

使用 mixin 的编程语言

除了 Flavors 和 CLOS(Common Lisp 的一部分),一些使用 mixin 的语言是:

* 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)在语言级别不支持 mixin,但可以通过在运行时将方法从一个对象复制到另一个对象来轻松模仿它们,从而“借用”mixin 的方法。请注意,这对于静态类型语言是不可能的,其中对象的签名在编译时是固定的。

于 2010-04-06T02:23:33.217 回答
1

D 版本 1 和 2 都支持mixins

于 2010-04-06T02:22:26.960 回答
1

Perl 的角色可以称为 mixins。

于 2010-04-06T02:27:18.103 回答
1

_why 的魔药语言浮现在脑海。这个想法是对象具有状态和方法。在大多数语言中,状态发生在对象中,方法发生在类中。在魔药中,对象只有状态,方法完全由 mixins 处理。

引用自述文件

一切都是对象。甚至 Mixin 也是对象。当然,闭包是对象。

然而,对象并不是一切。没有混合它们是没有用的。

顺便说一句,我想念为什么。我们需要更多的人做这样的疯狂的事情

于 2010-04-06T02:28:11.767 回答
0

好吧,当然是口味。这演变成CLOS

于 2010-04-06T02:20:19.687 回答
0

JavaScript 支持它们。您可以随时将函数/字段添加到对象的原型中。

于 2010-04-06T02:21:06.157 回答