Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby &引用+;1“;给我不同于“的结果”+;1“;用红宝石? [6]撬(主)>[1,2,3]。最小值+1 => [1] [7] 撬(主)>[1,2,3]。最小+1 => 2_Ruby - Fatal编程技术网

Ruby &引用+;1“;给我不同于“的结果”+;1“;用红宝石? [6]撬(主)>[1,2,3]。最小值+1 => [1] [7] 撬(主)>[1,2,3]。最小+1 => 2

Ruby &引用+;1“;给我不同于“的结果”+;1“;用红宝石? [6]撬(主)>[1,2,3]。最小值+1 => [1] [7] 撬(主)>[1,2,3]。最小+1 => 2,ruby,Ruby,我被吹走了。我想这一定与min函数有关吧?因为在Ruby中,max有同样的问题,但不是sum空格在Ruby中很重要,至少有时是这样 如果您说x+1,那么Ruby将+解释为二进制加法运算符,因此它被视为类似x.+(1)的方法调用 如果您说x+1,那么Ruby将+解释为一元加号运算符(AKA),将空格解释为方法调用,因此表达式作为一个整体被视为x(+1),或者更明确地解释为x(1.+@()) 类似x的表达式・ y(对于某些操作员・)可以用不同的方式解释,因为方法调用括号(有时)是可选的。它可以被看作

我被吹走了。我想这一定与
min
函数有关吧?因为在Ruby中,
max
有同样的问题,但不是
sum

空格在Ruby中很重要,至少有时是这样

如果您说
x+1
,那么Ruby将
+
解释为二进制加法运算符,因此它被视为类似
x.+(1)
的方法调用

如果您说
x+1
,那么Ruby将
+
解释为一元加号运算符(AKA),将空格解释为方法调用,因此表达式作为一个整体被视为
x(+1)
,或者更明确地解释为
x(1.+@())

类似
x的表达式・ y
(对于某些操作员
)可以用不同的方式解释,因为方法调用括号(有时)是可选的。它可以被看作
x(・ y) 
x()・ y
,Ruby选择后者。当没有第二个空格时(即
x・y
)然后Ruby将其视为
x(・y) 
。事情更加复杂,因为
x
可能是局部变量或方法调用。可选的括号和空格会给人类带来一些歧义,但对Ruby来说则不然

因此,在
[1,2,3].min+1
中添加缺少的/可选的括号,我们可以得到:

[1,2,3].min(+1)
[1,2,3].min() + 1
您调用的参数为
1
,这将:

使用整型参数
n
且无块,返回最多包含n个元素的新数组,按每个方法的升序排列

因此产生了
[1]
结果

将括号添加到
[1,2,3].min+1
中可以得到:

[1,2,3].min(+1)
[1,2,3].min() + 1
Ruby采用可选参数
n
,该参数以数组形式返回最小的
n
项。当您在
+
的左侧放置一个空格,但在右侧没有空格时,这意味着您需要一个一元正1作为可选参数,从而得到
[1]
。在
+
的两边都有空格或两边都没有空格将被解析为希望在
min
的结果中添加空格

[10,11,12].min#=>10
[10,11,12].分钟(+1)#=>[10]
[10,11,12].分钟(+2)#=>[10,11]
[10,11,12].min+2#=>[10,11],因为在Ruby中括号通常是可选的
[10,11,12]。min+1#=>11,不带空格,解释为加法而不是一元数+
[10,11,12].min+1#=>两侧的11个空格,也可解释为加法

请注意,只有在不使用显式括号并强制Ruby猜测时,空格才起作用<代码>[1,2,3]。min(+1)
.min(+1)
相同。@meagar-True,我添加了一些注释。