硬币翻转统计程序 - 未定义的方法

时间:2012-01-05 07:30:44

标签: ruby instance-methods singleton-methods

我正在尝试编写一个硬币翻转程序,我可以分析翻转头的百分比。我已经让硬币翻转工作,而不是实际分析。

问题在于我创建了一个Coin类,以便在之后将对象进一步分解为类似Coin.length的内容。

为什么我会收到"undefined method 'flip' for Coin:Class (NoMethodError)" from flip.rb:14:in 'times' from flip.rb:14:in <main>  当我确实有一个?

class Coin

def flip
  flip = 1 + rand(2)
    if flip == 2 
        then puts "Heads"
    else
        puts "Tails"
    end
end 

end

10.times do
  Coin.flip
end

这是我尝试模仿的模具示例:

 class Die

     def roll
       1 + rand(6)
     end

  end

    #  Let's make a couple of dice...
    dice = [Die.new, Die.new]

    #  ...and roll them.
    dice.each do |die|
      puts die.roll
    end

2 个答案:

答案 0 :(得分:3)

Coin.flip不是您定义的方法;这将是一个类方法,并且要定义一个名为flip的类方法,你会写:

class Coin
  def self.flip
    ...
  end
end

您创建的是实例方法,因此需要在实例上调用它:

coin = Coin.new
coin.flip
# or
Coin.new.flip

在你的第二个例子中(使用骰子),你正在正确地调用new并创建实例。

答案 1 :(得分:2)

您定义了实例方法filp,但没有名为Coin.flip的类方法。