我们可以通过以下方式将字符串转换为符号:
"string_to_symbol".to_sym
# => :string_to_symbol
如何以新的方式定义关键字来转换字符串?预期结果:
# => string_to_symbol:
我动态调用关键字,最后使用=>
为其分配值。我不希望这样做,以保持我的代码一致。
答案 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!