如果我在Enumerable
中重新定义方法,例如
module Enumerable
def map
"hello"
end
end
我认为map
中的Array
会更改为我的版本。但[1,2,3].map {|x| x+x}
仍会输出[2,4,8]
。我查看了Array
的手册,但没有定义map
,只有map!
。如何使Array
使用我的map
方法?正在重新定义
数组唯一的方法?
答案 0 :(得分:0)
正如mudasobwa指出的那样,Enumerable#map
被Array#map
覆盖。重新定义Array#map
是一种方法。另一种方法是创建一个新模块,并将其添加到Array
。
module MyEnumerable
def map
"hello"
end
end
class Array
prepend MyEnumerable
end