0

我正在尝试编写一个硬币翻转程序,我可以在其中分析正面翻转的百分比。我已经开始抛硬币了,只是还没有真正进行分析。

问题是当我创建了一个 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
4

2 回答 2

3

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

class Coin
  def self.flip
    ...
  end
end

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

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

在您的第二个示例(使用 Dice)中,您正确地调用new和创建实例。

于 2012-01-05T07:36:35.400 回答
2

您定义了实例方法filp,但没有调用类方法Coin.flip

于 2012-01-05T07:40:00.077 回答