Ruby 自定义类以引发某些irb行为
我创建了一个名为SpecialArray的类,我想自定义irb显示的输出类型。当我创建一个实例变量test_array并使用SpecialArray生成一个数组,然后在irb中键入“test_array”时,我得到以下结果:Ruby 自定义类以引发某些irb行为,ruby,Ruby,我创建了一个名为SpecialArray的类,我想自定义irb显示的输出类型。当我创建一个实例变量test_array并使用SpecialArray生成一个数组,然后在irb中键入“test_array”时,我得到以下结果: 1.9.3p194 :051 > test_array => [1, 2, 0, 6, 11] 当我使用“puts”时,irb只返回对象,如下所示: 1.9.3p194 :054 > puts test_array #<SpecialArray:0
1.9.3p194 :051 > test_array
=> [1, 2, 0, 6, 11]
当我使用“puts”时,irb只返回对象,如下所示:
1.9.3p194 :054 > puts test_array
#<SpecialArray:0x007ff05d0b4960>
1.9.3p194:054>放置测试数组
#
但我希望irb的行为更像第一个示例,我只键入“test_array:(即,我希望以单行形式返回数组)。我尝试用我自己的方法覆盖默认的puts方法,但没有多大成功。关于如何执行此操作的任何建议?Test\u数组是一个对象,当直接调用对象上的puts时,通常会返回实例 您应该在puts方法中使用以下内容:
puts test_array.to_s
你可以在前面的问题中问这个问题。与
p
和默认IRB行为不同,将调用对象的
方法以获取其字符串表示形式。在类中以你喜欢的方式重写它,就这样。在StackOverflow上进行良好缩进所需的是4个空格。不是更多,不是更少。Beca使用你的SpecialArray#to_s
返回的结果。你应该覆盖它以获得更好的结果。