我试图更好地了解Ruby
. 所以 Ruby 提出Mixins
了一个一流的概念。在C#
一个可以创建Extension Methods
的行为上Interfaces
。因此,这两种技术都提供了一种广为人知的机制Mixin
。
在特定示例上比较这两种方法可能会很好。
Ruby 中的可枚举
让我们采用所有那些适用于集合的漂亮方法。在 Ruby 中,这些是,all?
等等:http ://ruby-doc.org/core-1.9.3/Enumerable.htmlany?
count
来自文档: Enumerable mixin 为集合类提供了几种遍历和搜索方法,并具有排序功能。每个类必须提供一个方法,该方法产生集合的连续成员。
C#中的可枚举
里面有C#
一个叫做的特性LINQ
,它也提供了这些方法All
,Any
等等Count
。
如果你想让你的类“ LINQ enabled
”,你需要实现IEnumerable<T>
接口,这迫使你还提供一个GetEnumerator
在概念上非常接近 ruby 方法的方法。
因此,从鸟的角度来看,您的班级现在获得了上述所有方法。它是怎么发生的?
.NET
将所有这些方法定义为接口上的所有LINQ
方法。并且由于您实现了这个接口,您现在“混合”了所有这些方法。Extension Methods
IEnumerable<T>
我想知道这两种方法有多大不同,如果有什么事情Ruby Mixins
可以做到C#'s
Interface
+Extension Method
战略不能做?Ruby Mixins
好吧,除了可以在运行时混合的事实。