Ruby中隐式哈希创建不一致?

Ear*_*rlz 8 ruby arrays syntax hash

好吧,所以我将自己DSL中的一些东西与Ruby进行比较.他们都支持的一个结构就是这个

x=["key" => "value"]
Run Code Online (Sandbox Code Playgroud)

知道数组和散列之间的区别,我认为这是非法的,但Ruby中的结果是

[{"key" => "value"}]
Run Code Online (Sandbox Code Playgroud)

为什么是这样?有了这种语法,你为什么不能这样做

x=("key" => "value") 
Run Code Online (Sandbox Code Playgroud)

为什么数组是隐式创建哈希的特例?

mae*_*ics 2

另一个特殊情况是在函数调用中,请考虑:

def f(x)
  puts "OK: #{x.inspect}"
end
f("foo" => "bar")
=> OK: {"foo"=>"bar"}
Run Code Online (Sandbox Code Playgroud)

因此,在某些情况下,可以隐式构建哈希(通过检测=>运算符?)。我想答案就是这是马茨最不令人惊讶的行为。