问题标题的可怕性是我要解决的问题。例子:
在 Ruby 中,Enumerable 在某种意义上是一个接口,我可以实现一些东西并将其记录为:
def myfancymethod(please_pass_me_an_Enumerable_here)
但另一方面,Enumerable 是接口的一种放大,其中 #each 作为其方法之一。如果我有课
class Foo
def each
:bar
end
end
对于那些不熟悉 Ruby 的人来说,如果你在一个类中混入 Enumerable 模块,你会得到几十个方法,这些方法只依赖于#each
方法来提供诸如#map
,#select
等之类的东西。
我可以说我的Foo
课程是 Enumerable-able 或 Enumerable-compatible 还是什么?哪些术语描述了“成为可枚举对象需要什么?”、“你必须拥有#each”的答案
同样,在 Ruby
(Array.new.methods - Object.new.methods).size # 111
这是否意味着要伪造一个 Array 接口,我必须实现 111 个方法?没办法,但我如何找出哪些方法是 Array 的“本质”。只是和?#[]
_ 如何理解它?#[]=
#size