我正在尝试编写一个硬币翻转程序,我可以分析翻转头的百分比。我已经让硬币翻转工作,而不是实际分析。
问题在于我创建了一个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
答案 0 :(得分:3)
Coin.flip不是您定义的方法;这将是一个类方法,并且要定义一个名为flip
的类方法,你会写:
class Coin
def self.flip
...
end
end
您创建的是实例方法,因此需要在实例上调用它:
coin = Coin.new
coin.flip
# or
Coin.new.flip
在你的第二个例子中(使用骰子),你正在正确地调用new
并创建实例。
答案 1 :(得分:2)
您定义了实例方法filp
,但没有名为Coin.flip
的类方法。