在 Ruby 中定义 Hash
时,有几种不同的语法可供选择:
# IRB Ruby 2.7.1 - Defining a Hash
my_hash = { 'string_transformed_into_symbol_1': 'value',
"string_transformed_into_symbol_2": 'value',
'string_1' => 'value',
"string_2" => 'value',
symbol_1: 'value',
:symbol_2 => 'value' }
我想箭头
=>
是Ruby 1.8版本的语法,被冒号:
所替代。但是,从上面的例子中我们可以看到,它不仅仅是一种语法糖:冒号:
将一个键String
转化为Symbol
。# IRB Ruby 2.7.1 - Outputing a Hash
my_hash
=> { :string_transformed_into_symbol_1 => "value",
:string_transformed_into_symbol_2 => "value",
"string_1" => "value",
"string_2" => "value",
:symbol_1 => "value",
:symbol_2 => "value" }
来自这篇问题,mu is too short发布了一份很好的回答:
如果你的Hash键都是简单的符号(大致上匹配于
/\A[a-z_]\w*\z/i
),那么JavaScript风格的写法(key: value
)会很有用 [...] 但如果你的键不是一个符号,那么你仍需要使用hashrocket。
这让我认为:
和=>
是方法(但是我知道我是错的)。然而,我在文档中找不到关于它们的任何信息。
问题:到底:
和=>
是些什么东西?我该怎样更多地了解它们,在Ruby源代码中它们定义在何处?