Extending Array隐藏初始化程序?

时间:2012-07-25 04:29:31

标签: ruby

我正在使用ruby 1.8.7

my_array = Array.new(5, "A")

工作正常。但是,如果我像这样扩展Array类:

class Array
  def my_function
    self
  end
end

然后初始化程序不再起作用并返回

wrong number of arguments (2 for 0)

为什么会这样,我该如何解决?

1 个答案:

答案 0 :(得分:3)

你是在Module内做的吗?如果是这样,您将定义一个单独的Array类,而不是从标准库中扩展Array

确保您的扩展程序位于顶层,否则请写下:

class ::Array

(顺便说一下,你有没有理由想要使用Ruby 1.8.7?如果没有,我建议使用最新的版本 - 多年来Ruby已经有所改进。)