为什么这个方法返回三个值?

  • 本文关键字:三个 返回 方法 ruby
  • 更新时间 :
  • 英文 :


我有以下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

相关内容

  • 没有找到相关文章

最新更新