Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 自定义类以引发某些irb行为_Ruby - Fatal编程技术网

Ruby 自定义类以引发某些irb行为

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

我创建了一个名为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: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
返回的结果。你应该覆盖它以获得更好的结果。