推送和弹出ruby数组nums<< (nums.pop)+(nums.pop)

时间:2014-05-30 08:40:41

标签: ruby

我在ruby数组推送和弹出的摘要中看到了这段代码:

nums = []

nums << 1
nums << 2
nums << 3

nums << (nums.pop) + (nums.pop)
nums << (nums.pop) * (nums.pop)

这里发生了什么?我正在努力学习,但由于某种原因无法理解最后两行中会发生什么。有人可以分解吗?

2 个答案:

答案 0 :(得分:2)

Array pop方法返回数组中的最后一个元素。

所以nums.pop第一次返回值3,第二次返回2

在这个语句中nums << (nums.pop) + (nums.pop)我们正在添加那些(3,2)值并推入同一个数组。所以Result数组是[1,5]

现在数组nums是[1,5]

对于第二个语句nums << (nums.pop) * (nums.pop),我们弹出nums array的两个元素并将结果相乘并将结果推送到同一个数组

结果数组是nums = [5].

检查ruby控制台以获得更多说明,并通过此链接http://www.ruby-doc.org/core-2.1.2/Array.html

答案 1 :(得分:1)

pop切断数组中的最后一个元素并返回它 <<push相同 - 在数组末尾添加一个元素 一行中的操作顺序是:pop,pop,add,push。我现在不解释它,阅读它。

所以,从[1,2,3]开始:

[1,2,3] --> pop=3,pop=2,add=(2+3),push=5      --> [1,5]
[1,5]   --> pop=5,pop=1,multiply=(1*5),push=5 --> [5]

希望这有帮助。