有方法时出现NoMethodError

时间:2018-08-21 14:17:17

标签: ruby

我正在创建一个Die类,该类具有输出骰子编号的功能。它已被命名为打印输出和输出,但是由于NoMethodError,该函数继续失败。这是我的代码:

class Die

  def initialize()
    @number = rand(7)
  end

  def output()
    puts @number
  end

  def roll()
    @number = rand(7)
  end

end

Die.new.roll.output

这是我运行代码时的错误:

  

2:Integer(NoMethodError)的未定义方法`output'

有什么想法吗?

2 个答案:

答案 0 :(得分:7)

您必须这样拨打电话:

die = Die.new
die.output # => 1
die.roll
die.output # => 3

首先,您需要将对象(Die.new)实例化为变量(die)。 然后在上面调用您的方法。

注意:最好使用rand(1..6)

不使用变量,您可以做得更好:

Die.new.output # => 3

不可能像您那样做连锁方法(或遵循Martin Zinovsky的回答)

答案 1 :(得分:4)

如果要链接方法,则应最后返回实例:

class Die
  def initialize
    @number = rand(7)
  end

  def output
    puts @number
  end

  def roll
    @number = rand(7)
    self # Here
  end
end

Die.new.roll.output