Программа статистики по монетам - неопределенный метод - PullRequest
0 голосов
/ 05 января 2012

Я пытаюсь написать программу для подбрасывания монет, в которой я могу анализировать процент сброшенных голов.Я получил бросок монеты на работу, но на самом деле это еще не анализ.

Проблема в том, что я создал класс 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 ]

3 голосов
/ 05 января 2012

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

class Coin
  def self.flip
    ...
  end
end

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

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

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

2 голосов
/ 05 января 2012

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

...