我来自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