在'Enumerable`中重新定义方法

时间:2015-04-19 05:38:38

标签: ruby

如果我在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方法?正在重新定义 数组唯一的方法?

1 个答案:

答案 0 :(得分:0)

正如mudasobwa指出的那样,Enumerable#mapArray#map覆盖。重新定义Array#map是一种方法。另一种方法是创建一个新模块,并将其添加到Array

module MyEnumerable
  def map
    "hello"
  end
end
class Array
  prepend MyEnumerable
end