Ruby中的直接字符串表示

时间:2011-03-27 21:25:13

标签: ruby

是否有一种简单的方法来获取Ruby构造的直接字符串表示形式?

例如:

a = [:foo, :bar]

致电a.to_s时,我得到:

"foobar"

我在寻找的是:

"[:foo, :bar]"

4 个答案:

答案 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就是你要找的。

>> [:a, :b].inspect
=> "[:a, :b]"

对于更复杂的对象,它可能没那么有用:

>> StringIO.new.inspect
=> "#<StringIO:0x00000100cc68d8>"
相关问题