2012-08-13 52 views
0

我不知道爲什麼會發生這種情況。下面是代碼:無論如何,在每個循環中輸出Ruby?

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

items = [5, 100] 
calculate_discounts items 

然後當我在命令行中運行它,我得到:

5 
100 

有沒有人知道這是怎麼回事?

+0

你在期待什麼? – 2012-08-13 13:38:12

+0

理想情況下什麼都沒有。我想使用數組中的值來計算一個值,但它只是輸出這些值而不告訴它。 – andy 2012-08-13 13:39:11

回答

0

明白了。對不起,我很愚蠢,因爲我一段時間沒有編碼紅寶石。我忘了紅寶石自動返回最後一個值。

+1

這仍然不能解釋爲什麼有輸出。當然,該方法返回傳入的數組,但它爲什麼要打印? – 2012-08-13 14:10:07

+0

我在文件中進一步打印計算的折扣。衛生署! – andy 2012-08-13 14:17:49

0

Ruby的函數總是返回一個值。如果你沒有return語句,那麼Ruby會返回函數中計算出的最後一個值。 Ruby的集合迭代器也返回一個值:

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

因此,在這種情況下,「calculate_discount」返回「項目」的元素。

2

返回值並不意味着該值實際上是打印的。

當您使用IRB時,'p'函數顯示函數返回的值。