将字符串转换为symbol / keyword

时间:2015-08-20 16:18:43

标签: ruby

我们可以通过以下方式将字符串转换为符号:

"string_to_symbol".to_sym
# => :string_to_symbol

如何以新的方式定义关键字来转换字符串?预期结果:

# => string_to_symbol:

我动态调用关键字,最后使用=>为其分配值。我不希望这样做,以保持我的代码一致。

1 个答案:

答案 0 :(得分:1)

不,没有。

重要的是要注意这两行完全相同:

{ foo: 'bar' }    #=> {:foo=>"bar"}
{ :foo => 'bar' } #=> {:foo=>"bar"}

这是因为第一个表单仅Syntactic sugar用于使用Symbol作为键创建哈希。 (而不是“在ruby中定义关键字的新方法”)

如果您想使用其他类型作为键,您仍然必须使用“hashrocket”(=>):

{ 'key' => 'val' } #=> {"key"=>"val"}
{ 0 => 'val' }     #=> {0=>"val"}

编辑:

正如@sawa在评论中指出的那样,问题是关于传递关键字参数,而不是哈希。这在技术上是正确的,但归结为完全相同(只要它的哈希与符号作为键:

def foo(bar: 'baz')
  puts bar
end

h = {
  :bar => 'Ello!'
}

foo(h)
# >> Ello!