带参数的initialize方法无法识别参数

时间:2015-07-17 22:03:07

标签: ruby constructor arguments

我正在使用initialize方法构建一个相当简单的Module :: Class。

module Encryption
  class Caesar

    def initalize(number)
      @caesar_number = number
    end
  end
end

当我运行Encryption::Caesar.new(2)时,我收到以下错误:

ArgumentError: wrong number of arguments (1 for 0)
    from (irb):32:in `initialize'
    from (irb):32:in `new'
    from (irb):32
    from /Users/yedidyaweiner/.rvm/rubies/ruby-2.1.3/bin/irb:11:in `<main>

如果我运行Encryption::Caesar.new,它会成功创建该类的新实例。

为什么错误说它在initialize方法中定义参数时不期望参数?

1 个答案:

答案 0 :(得分:3)

initalize拼写错误;它应该是initialize

module Encryption
  class Caesar
    def initialize(number)
      @caesar_number = number
    end
  end
end

foo = Encryption::Caesar.new(2)
foo.inspect #=> #<Encryption::Caesar:0x1e05580 @caesar_number=2>