to_sym
方法有什么作用?它用于什么?
答案 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