Прямое строковое представление в Ruby - PullRequest
1 голос
/ 28 марта 2011

Есть ли простой способ получить прямое строковое представление конструкции Ruby?

Например:

a = [:foo, :bar]

При вызове a.to_s я получаю:

"foobar"

Я ищу:

"[:foo, :bar]"

Ответы [ 4 ]

3 голосов
/ 28 марта 2011

Какую версию 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 ​​:

obj.inspect → string

Возвращает строку, содержащую удобочитаемое представление obj.Если не переопределено и нет переменных экземпляра, для генерации строки используется метод to_s.

to_s не претендует на то, чтобы быть читаемым человеком.

2 голосов
/ 28 марта 2011

В 1.8.7 вы можете использовать inspect метод для этого

a = [:foo, :bar]
a_string = a.inspect
0 голосов
/ 28 марта 2011

Для "простых" объектов inspect - это то, что вы ищете.

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

Для более сложных объектов может быть не так уж и полезно:

>> StringIO.new.inspect
=> "#<StringIO:0x00000100cc68d8>"
0 голосов
/ 28 марта 2011

Попробуйте метод inspect, например ::10000 *

a = [:foo, :bar]
a.inspect # => "[:foo, :bar]"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...