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是不一致的。