我來自Java和一些C++,並通過創建二十一點遊戲來學習(一些)紅寶石。我非常認真地通過這個程序來了解ruby是如何工作的。to_s &&包含?涉及繼承的問題
手頭的代碼是:
class Card
include Comparable
include Enumerable
attr_accessor :value
def initialize(v)
@value = v
end
def <=>(other)
if other.is_a?(Card)
@value <=> other.value
else
@value <=> other
end
end
def each
yield @value
end
def to_s
"#{@value}"
end
end
class Hand < Card
include Enumerable
attr_accessor :hand
def initialize
@hand = Array.new()
end
def clear_hand
@hand.clear
end
def add_to_hand(c)
if c.is_a?(Card)
@hand << c
else
raise "We have a problem - we received a non card object into our hand"
end
end
def each
@hand.each do |card|
yield card
end
end
def to_s
@hand.each do |c|
puts c
end
end
end
c1 = Card.new(3)
c2 = Card.new(0)
p = Hand.new()
p.add_to_hand(c1)
puts c1 # => 3
puts p # => 3 \n(new line) #<Hand:0x00000002b01ba0>
puts [1,2,3,4,5].include?(c1) # => true
puts [1,2,3,4,5].include?(p) # => false
我的問題:
爲什麼,當我使用「放P」我得到一個對象ID與預期值「3'.It只做沿這與數組(或者這是我迄今注意到的所有,但我相信有其他情況下,它也返回ObjectID)。有人可以解釋爲什麼。
最後一行(當我們得到錯誤輸出時)我希望它返回true - 這是因爲我有一個手牌,這個手牌裏面裝滿了牌(此時只有一個牌),並且它包含卡的值爲3.所以,我不知道我的代碼有什麼問題導致這個返回錯誤 - 我產生了「手」的每張牌,我相信應該通過使用每張牌的聲明來產生該值?
如果這不清楚,請讓我知道! 在此先感謝。
你剛纔說過我忘了在我手上的課上做<==>嗎?或者是在別的地方還是我做的?謝謝! – user2243357 2013-04-08 19:06:27
@ user2243357不,你沒有補足,我刪除了那部分,因爲它不正確。 – 2013-04-09 12:31:38