String.to_sym?


#1

hi,

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


#2

“robertj” removed_email_address@domain.invalid writes:

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


#3

Hi,

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.


#4

Quoting robertj removed_email_address@domain.invalid:

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


#5

Hmm… What version of Ruby are you using? You should be able to use
String#to_sym presently.

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.


#6

removed_email_address@domain.invalid writes:

its easy enough to write

class String
def to_sym
eval “:#{dump}”


#7

hi,

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 :slight_smile:

ciao robertj


#8

robertj wrote:

hi,

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 :slight_smile:

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.