2010-10-31 3 views

ответ

47

to_sym преобразует строку в символ. Например, "a".to_sym становится :a.

Это не относится к рельсам; ванильный рубин тоже.

Похоже, что в некоторых версиях Ruby символ может быть преобразован в Fixnum и из него. Но irb от Ruby 1.9.2-p0, от ruby-lang.org, не позволяет этого, если вы не добавите свой собственный метод to_sym в Fixnum. Я не уверен, делает ли Rails это, но в любом случае это не очень полезно.

+5

, если вы используете to_sym в своем коде, остерегайтесь! У вас может быть лук-порей. символы никогда не выделяются рубином. – fotanus

+28

@fotanus Я предполагаю, что вы имеете в виду память ** leak **, а не какой-то овощ: http://en.wikipedia.org/wiki/Leek –

+0

Здравствуйте @cHao, спасибо за ваш ответ. Не могли бы вы рассказать, почему '.to_sym!' (С '!') Не работает. Я использовал его в этом идеоне: http://ideone.com/D7dZNz, и он, похоже, не работает. Спасибо! –

Смежные вопросы