Arrays Ruby数组元素求值

Arrays Ruby数组元素求值,arrays,ruby,operator-precedence,Arrays,Ruby,Operator Precedence,我想知道为什么在数组中,当元素是方法调用时,括号的存在很重要。我知道[]是一个方法调用,我假设该方法调用的参数将首先计算,因此括号的存在不重要。但显然这很重要 def double x x * 2 end a = [1, 2+2] # works fine the array is [1, 4] b = [1, double(2)] # also works fine the array is [1, 4] c = [1, (double 2)] # also works fine the

我想知道为什么在数组中,当元素是方法调用时,括号的存在很重要。我知道
[]
是一个方法调用,我假设该方法调用的参数将首先计算,因此括号的存在不重要。但显然这很重要

def double x
  x * 2
end

a = [1, 2+2] # works fine the array is [1, 4]
b = [1, double(2)] # also works fine the array is [1, 4]
c = [1, (double 2)] # also works fine the array is [1, 4]
d = [1, double 2]  # throws error syntax error, unexpected tINTEGER, expecting keyword_do or '{' or '('
[1, double 2]

[foo 1,2,3]
-是
2
3
附加方法参数还是数组元素?我明白你的意思。谢谢当在第一个位置查看某个元素时,这是非常清楚的,但当它是最后一个元素时,它就不那么明显了。另一方面,
[1,a:2,b:3]
被解析器愉快地接受,即使它也是不明确的(可能是
[1,{a:2,b:3}]
[1,{a:2},{b:3}]
)\_(ツ)_/“@Stefan在
[1,double 2]
中的歧义是什么,对我来说似乎是明确的,但也许我遗漏了something@LesNightingill没有。Ruby是不一致的。