我有以下Ruby程序:
def swap (a,b)
return a,b = b,a
end
puts swap(5,3)
我期望输出。
3
5
但我得到。
5
3
5
原因是什么?
谢谢!
为什么这个方法返回三个值?
由于return
语句,Ruby试图将右侧解释为数组和您的代码:
return a,b = b,a
被计算为:(为清晰起见添加括号)
return [a, (b=b), a]
。3元素数组[a, b, a]
(将b
赋值给自身没有任何作用)
删除关键字return
。它实际上是在做:返回a, (b), a。Where (b = b)
def swap(a,b)
a, b = b, a
end
puts swap(5,3)
输出=> 3, 5
在您的程序中:在swap函数中,您给出的返回值是return a,b = b,a
删除a,b
,直接写入return b,a
。您将得到预期的输出。原因:在return a,b = b,a
中,首先返回a
的值,然后执行b=b,a
。希望这对你有帮助
def swap (a,b)
return b,a
end
puts swap(5,3)
输出3
5