Ruby方法'to_sym'有什么作用?

时间:2010-10-31 11:38:31

标签: ruby methods

to_sym方法有什么作用?它用于什么?

2 个答案:

答案 0 :(得分:53)

to_sym将字符串转换为符号。例如,"a".to_sym变为:a

这不是Rails特有的; vanilla Ruby也有它。

在某些版本的Ruby中,符号也可以转换为Fixnum和从Fixnum转换。但是,来自ruby-lang.org的Ruby 1.9.2-p0中的irb除非您将自己的to_sym方法添加到Fixnum,否则不允许这样做。我不确定Rails是否会这样做,但在任何情况下它似乎都没有用。

答案 1 :(得分:1)

详细介绍@cHao接受的答案的有用信息:
需要将原始string变量转换为symbol时使用to_sym

在某些情况下,可以通过将变量创建为to_sym而不是首先创建symbol来避免string。例如:

my_str1 = 'foo'
my_str2 = 'bar baz'

my_sym1 = my_str1.to_sym
my_sym2 = my_str2.to_sym

# Best:
my_sym1 = :foo
my_sym2 = :'bar baz'

array_of_strings = %w[foo bar baz]
array_of_symbols = array_of_strings.map(&:to_sym)

# Better:
array_of_symbols = %w[foo bar baz].map(&:to_sym)

# Best
array_of_symbols = %i[foo bar baz]

另请参见:

When to use symbols instead of strings in Ruby?
When not to use to_sym in Ruby?
Best way to convert strings to symbols in hash
uppercase %I - Interpolated Array of symbols, separated by whitespace