为什么这个语义相同的类会导致未定义的方法'new'错误?

时间:2014-09-23 16:11:24

标签: ruby constructor

为什么以下代码错误:

class Complex
    def initialize(real, imaginary)
        @imaginary = imaginary
        @real = real
    end     
end

c = Complex.new(5,3)
  

Complex.rb:8:在<main>': undefined method new'中用于Complex:Class   (NoMethodError)

但下面的语义相同的程序不会:

class Wat
    def initialize(a, b)
        @a = a
        @b = b
    end     
end

c = Wat.new(5,3)

1 个答案:

答案 0 :(得分:4)

因为Complex已经存在,并且以不同的方式构建,例如,

Complex(2, 3)

当您重新打开课程(不定义自己的课程)时,您会在现有课程的限制下进行操作。

new在1.9 IIRC附近被移除。