2012-01-05 69 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 

創建什麼是實例方法,因此它要求它被稱爲上的一個實例:

​​

在你的第二個例子(用骰子),你是正確調用new和創建實例。

2

您定義了實例方法filp,但沒有名爲Coin.flip的類方法。