o = Object.new
o.instance_eval { @str = "foo" }
p o # => #<Object:0x5dd1a0 @foo="bar">
좋은 결과입니다. 객체를 인수로 사용하여 p
을 호출하면 inspect
객체의 출력이 인쇄됩니다. 그러나, 불행하게도, 경우 개체가 출력이의 출력이됩니다 다음 재정의 to_s
방법이 있습니다에뮬레이트 된 기본 개체 # inspect Output?
class << o
def inspect; "blah"; end
end
p o # => "blah"
:
class << o
def to_s; @str; end
end
p o.to_s # => "foo"
p o # => foo
그래서이 문제를 해결하기를, 우리는 우리의 객체에 대해 inspect
방법을 정의해야
첫 번째 코드 예제의 3 행에 표시된 것처럼 객체의 inspect
메서드가 기본 Ruby 방식으로 출력되도록하려면 어떻게해야합니까?
내가 가진 가장 가까운 아래이지만, 꽤 맞아 있는지 확실하지 않습니다
class << o
def inspect
vars = instance_variables.collect { |v| v.to_s << "=#{instance_variable_get(v).inspect}"}.join(", ")
"#<#{self.class}:0x#{object_id} #{vars}>"
end
end
사용중인 Ruby 버전은 무엇입니까? –