is there a String#to_sym method anywhere in the
statndard lib? i couldnt find anything like that
but maybe i missed it.
its easy enough to write
class String
def to_sym
eval ":#{self}"
end
end
just want to check if its there already.
ciao robertj
>hi,
>is there a String#to_sym method anywhere in the
>statndard lib? i couldnt find anything like that
>but maybe i missed it.
It's called "intern", because Ruby internalizes the string into a symbol.
And it's rather more efficient than the eval method you propose.
irb(main):001:0> "somestring".intern
=> :somestring
At Tue, 13 Dec 2005 00:27:38 +0900,
Mark J.Reed wrote in [ruby-talk:170247]:
> >is there a String#to_sym method anywhere in the
> >statndard lib? i couldnt find anything like that
> >but maybe i missed it.
>
> It's called "intern", because Ruby internalizes the string into a symbol.
String#to_sym is also an alias in 1.8 or later.
--
Nobu Nakada
> hi,
>
> is there a String#to_sym method anywhere in the
> statndard lib? i couldnt find anything like that
> but maybe i missed it.
If you've got a reasonably recent version of Ruby, yes. I don't
know about 1.6 or earlier.
> its easy enough to write
>
> class String
> def to_sym
> eval ":#{self}"
> end
> end
If you had to write one yourself, you'd want:
class String
alias to_sym intern
end
eval'ing ":#{self}" won't work if the string has spaces or anything
like that. In general, eval'ing strings should be an absolute last
resort in code, because it is very difficult to make reliable.
-mental
Originally the method for doing so was #intern. Though I haven't heard
any specific verbage to the effect from offical sources, I would highly
recommend never using #intern again. Use #to_sym instead.
T.
> Quoting robertj <robert...@yahoo.com>:
>
>> hi,
>>
>> is there a String#to_sym method anywhere in the
>> statndard lib? i couldnt find anything like that
>> but maybe i missed it.
>
> If you've got a reasonably recent version of Ruby, yes. I don't
> know about 1.6 or earlier.
>
>> its easy enough to write
>>
>> class String
>> def to_sym
eval ":#{dump}"
>> end
>> end
>
> eval'ing ":#{self}" won't work if the string has spaces or anything
> like that. In general, eval'ing strings should be an absolute last
> resort in code, because it is very difficult to make reliable.
>
> -mental
>
--
Christian Neukirchen <chneuk...@gmail.com> http://chneukirchen.org
obviously its there IF you try to call it.
prblem on my side was that i looked in the docs
http://www.ruby-doc.org/docs/ProgrammingRuby/
and there is no mention of #to_sym anywhere
so i thought its no available.
my fault :-)
ciao robertj
I see. FYI for the future. The best place to check first is always
using ri:
$ ri to_sym
More than one method matched your request. You can refine
your search by asking for information on one of:
Fixnum#to_sym, String#to_sym, Symbol#to_sym
$ ri String#to_sym
...
T.