是否有一种简单的方法来获取Ruby构造的直接字符串表示形式?
例如:
a = [:foo, :bar]
致电a.to_s
时,我得到:
"foobar"
我在寻找的是:
"[:foo, :bar]"
答案 0 :(得分:3)
您使用的是哪个版本的Ruby?使用Ruby 1.9我得到:
irb(main):002:0> a = [:foo, :bar]
=> [:foo, :bar]
irb(main):003:0> a.to_s
=> "[:foo, :bar]"
irb(main):004:0> a.inspect
=> "[:foo, :bar]"
编辑:正如@ fl00r所指出的,在1.8.7中您可以使用inspect
。通常,inspect
应该提供人类可读的字符串,即使to_s
没有。来自ruby docs:
obj.inspect→string
返回包含obj的人类可读表示的字符串。如果没有重写且没有实例变量,则使用to_s方法生成字符串。
to_s没有声称人类可读。
答案 1 :(得分:2)
在1.8.7中,您可以使用inspect
方法
a = [:foo, :bar]
a_string = a.inspect
答案 2 :(得分:0)
尝试inspect
方法,例如:
a = [:foo, :bar]
a.inspect # => "[:foo, :bar]"
答案 3 :(得分:0)
对于“简单”对象,inspect
就是你要找的。 p>
>> [:a, :b].inspect
=> "[:a, :b]"
对于更复杂的对象,它可能没那么有用:
>> StringIO.new.inspect
=> "#<StringIO:0x00000100cc68d8>"