2012-01-05 4 views
0

コインフリッププログラムを作成しようとしています。ここで、反転したヘッドの割合を分析できます。私はコインフリップを働かせて、実際にはまだ分析していません。コインフリップ統計プログラム - 未定義メソッド

問題は、後でCoin.lengthのようなオブジェクトにさらに細分化するためにCoinクラスを作成したときです。

実際に私が持っているときに、なぜ私は"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 

答えて

3

Coin.flipは、あなたが定義した方法ではありません。これは、クラスメソッドとなり、そしてflipあなたが書くでしょうというクラスメソッドを定義するには:

class Coin 
    def self.flip 
    ... 
    end 
end 

あなたが作成するインスタンス方法であり、そのように、それはそれは、インスタンスに対して呼び出されている必要があります

​​

2番目の例(ダイス付き)では、正しくnewを呼び出してインスタンスを作成しています。

2

インスタンスメソッドfilpを定義しましたが、Coin.flipというクラスメソッドはありません。

関連する問題