在Ruby中基于数组中的索引比较项目
我有一张在Ruby中基于数组中的索引比较项目,ruby,arrays,compare,Ruby,Arrays,Compare,我有一张卡类,我想重载操作符与另一张卡进行比较(王牌高于王牌,王牌高于王牌,等等)。我忘记了我对Ruby所知甚少,也不知道从哪里开始 class Card @@RANKS = ['A', 'K', 'Q', 'J', 'T', '9', '8','7','6','5','4','3','2'] attr_reader :rank def initialize(str) @rank = str[0,1] end def > (other) #?????
卡
类,我想重载
操作符与另一张卡进行比较(王牌高于王牌,王牌高于王牌,等等)。我忘记了我对Ruby所知甚少,也不知道从哪里开始
class Card
@@RANKS = ['A', 'K', 'Q', 'J', 'T', '9', '8','7','6','5','4','3','2']
attr_reader :rank
def initialize(str)
@rank = str[0,1]
end
def > (other)
#?????
end
end
你可以使用这个方法。以下代码检查两张卡的索引,如果其他
卡出现在当前卡之后,则返回true
class Card
@@RANKS = ['A', 'K', 'Q', 'J', 'T', '9', '8','7','6','5','4','3','2']
attr_reader :rank
def initialize(str)
@rank = str[0,1]
end
def > (other)
@@RANKS.index(other.rank) > @@RANKS.index(@rank)
end
end
ace = Card.new 'A'
king = Card.new 'K'
nine = Card.new '9'
puts ace > king
puts ace > nine
puts nine > king
如果定义spaceship操作符而不是大于,您可能会更高兴。() 例如,排序取决于它的定义
我同意达林的看法 所有你需要做的是包括比较和定义,然后你将能够做所有其他的比较免费!这比单独定义“>”灵活得多 用鹤嘴锄书上的话来说: Comparable mixin可用于向类添加比较运算符(),以及?之间的方法。为此,Comparable假设使用它的任何类都定义了运算符。因此,作为类编写器,您可以定义一个方法,包括Comparable,并免费获得六个比较函数 (免费在线)鹤嘴锄书中提供了完整的示例:
(向下滚动两段至“mixin为您提供了一种奇妙的控制方式…”实现隐式实现>也会吗?啊,需要“包括可比较的”