2012-01-05 2 views
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 

ответ

3

Coin.flip не метод вы определили; это будет метод класса и определить метод класса под названием flip можно было бы написать:

class Coin 
    def self.flip 
    ... 
    end 
end 

То, что вы создали это экземпляр метод, и как таковой он требует, чтобы она называется на примере:

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

В вашем втором примере (с помощью Dice) вы правильно вызываете new и создаете экземпляры.

2

Вы определили метод экземпляра filp, но нет метода класса, называемого Coin.flip.