如何在不调用方法

时间:2016-11-17 14:25:02

标签: ruby

是否可以在Ruby中没有实例对象的情况下调用特定方法(或获取实例变量)?

class Foo
  def initialize(arg)
    @bar = arg
  end
end

f = Foo.new('test')
p f #=> "test" (in this case, get @bar variable without instance method)

例如,如果定义了Example类,

ex = Example.new
ex #=> #<Example:0x00000000000000>

我想这样做。

ex = Example.new('hello')
ex #=> "hello"

2 个答案:

答案 0 :(得分:1)

您可以inspect使用pto_s使用puts

class Foo
  def initialize(arg)
    @bar = arg
  end
  def inspect
    @bar
  end
  def to_s
    @bar
  end
end

f = Foo.new('test')
puts f #=> "test"
p f #=> "test"

答案 1 :(得分:0)

忽略initialize方法的返回值; initialize总是返回self,在这种情况下是Foo的一个实例。定义to_s方法只定义了Foo实例的字符串表示。

f = Foo.new('test')

p f #=> "test"
p f.class #=> Foo

所以在ex = Example.new('hello')之后,ex将始终是一个Example实例。它不能是字符串或其他什么。