Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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_Irb_Inspect - Fatal编程技术网

Ruby 自定义IRB输出

Ruby 自定义IRB输出,ruby,irb,inspect,Ruby,Irb,Inspect,我创建了一个名为SpecialArray的类,我想自定义irb显示的输出类型。当前,当我创建该类的新实例时,irb返回整个对象。这就是我目前看到的: 1.9.3p194 :022 > SpecialArray.new([1,2,0,6,2,11]) => #<UniqueArray:0x007ff05b026ec8 @input=[1, 2, 0, 6, 2, 11], @output=[1, 2, 0, 6, 11]> 我需要做什么来指定irb只显示输出 解决方案:

我创建了一个名为SpecialArray的类,我想自定义irb显示的输出类型。当前,当我创建该类的新实例时,irb返回整个对象。这就是我目前看到的:

1.9.3p194 :022 > SpecialArray.new([1,2,0,6,2,11]) 
=> #<UniqueArray:0x007ff05b026ec8 @input=[1, 2, 0, 6, 2, 11], @output=[1, 2, 0, 6, 11]>
我需要做什么来指定irb只显示输出

解决方案:

这就是我最终创建的方法

def inspect
  output.inspect
end
IRB调用方法以获取对象的字符串表示形式。您只需像这样重写此方法:

class Foo
  def inspect
    "foo:#{object_id}"
  end
end
然后在IRB中,您将获得:

>> Foo.new
=> foo:70250368430260 
在您的特定情况下,只需使用
SpecialArray#inspect
返回底层数组的字符串表示,例如:

SpecialArray
  def inspect
    @output.inspect
  end
end
SpecialArray
  def inspect
    @output.inspect
  end
end