Ruby在每个循环中输出,不管是什么?

Ruby在每个循环中输出,不管是什么?,ruby,Ruby,我不知道为什么会这样。代码如下: def calculate_discount items items.each do |item| #Nothing here end end items = [5, 100] calculate_discounts items 然后,当我在命令行中运行它时,我得到: 5 100 还有人知道发生了什么吗?知道了。对不起,我太笨了,因为我已经有一段时间没有编写ruby了。我忘了ruby auto会返回最后一个值。ruby的函数

我不知道为什么会这样。代码如下:

def calculate_discount items
    items.each do |item|
        #Nothing here
    end
end

items = [5, 100]
calculate_discounts items
然后,当我在命令行中运行它时,我得到:

5
100

还有人知道发生了什么吗?

知道了。对不起,我太笨了,因为我已经有一段时间没有编写ruby了。我忘了ruby auto会返回最后一个值。

ruby的函数总是返回一个值。如果没有return语句,那么Ruby将返回函数中计算的最后一个值。Ruby的集合迭代器还返回一个值:

irb(main):018:0> [1,2,3].each do |item|
irb(main):019:1* end
=> [1, 2, 3]

因此,在本例中,“计算折扣”返回“项目”的元素。

返回值并不意味着实际打印了值


当您使用IRB时,“p”函数显示函数返回的值。

您期望的是什么?理想情况下为零。我想用数组中的值来计算一个值,但它只是输出值,没有告诉我。这仍然不能解释为什么会有输出。当然,该方法返回传入的数组,但是为什么要打印它呢?我在文件的下面打印计算出的折扣。啊!