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
4

2 に答える 2

3

Coin.flipはあなたが定義したメソッドではありません。これはクラスメソッドになり、呼び出されるクラスメソッドを定義するには次のflipように記述します。

class Coin
  def self.flip
    ...
  end
end

作成したのはインスタンスメソッドであるため、インスタンスで呼び出される必要があります。

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

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

于 2012-01-05T07:36:35.400 に答える
2

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

于 2012-01-05T07:40:00.077 に答える