Ruby,断言_等于两个对象数组
我有以下情况。我试图为一组对象编写一个单元测试。对象的定义如下:Ruby,断言_等于两个对象数组,ruby,unit-testing,assert,Ruby,Unit Testing,Assert,我有以下情况。我试图为一组对象编写一个单元测试。对象的定义如下: class Element attr_reader :title, :season, :episode def initialize ( name, number ) @name = name @number = number end def to_s number = "%02d" % @number result = "Number " << number &l
class Element
attr_reader :title, :season, :episode
def initialize ( name, number )
@name = name
@number = number
end
def to_s
number = "%02d" % @number
result = "Number " << number << " " << @name
result
end
end
类元素
读者简介:标题、季节、插曲
def初始化(名称、编号)
@name=name
@数字=数字
结束
def至美国
number=“%02d”%@number
result=“Number”尝试使用以下代码为类声明方法=
def ==(other)
self.to_s == other.to_s
end
旁注,您可能也想重构to_的方法,以获得一些简洁的代码
def to_s
"Number %02d #{@name}" % @number
end
编辑:
数字已经定义了=
方法(https://github.com/evanphx/rubinius/blob/master/kernel/bootstrap/fixnum.rb#L117)
Ruby通过对数组的每个元素运行=
比较来比较数组。下面是在数组上实现的==
,正如在Rubinius中所做的那样(一个几乎完全用Ruby本身编写的Ruby实现)
如果不考虑各种错误检测,它基本上会对数组的所有元素递归运行=
,如果所有元素都匹配,则返回true。自从通过EdgeCase ruby Koans学习ruby以来,我发现自己一直在使用它们作为类似您的问题的参考。您可能想查看它们以备将来参考@revdrjrr:谢谢你的链接,我已经听说过了,但是从来没有机会找到它们。好吧,谢谢,但是我为什么要这么做呢?当我有一个say数字数组(据我所知,这些数字本身也是对象)时,我不必覆盖==方法。感谢重构提示:)@Mark,更新了答案,因为太长了,无法在评论中解释:)