[閒聊] Ruby 的傳回值的 , (multiple-value)
def test1234
return 1, 2, 3, 4
end
如果用一個值去接
a = test1234
則為陣列 a = [1, 2, 3, 4]
如果要只抓第一個參數時使用 a = test1234[0]
如果用二個值去接
a,b = test1234
則為單值 a = 1, b = 2
超過數量的的值為 nil
a,b,c,d,e,f = test1234
則 a = 1, b = 2, c = 3, d = 4, e =nil, f = nil
題外話 : 比較 ( Common Lisp 部份 )
Common Lisp 中用單值去接時, 並不會得到陣列, 而是第一個值
如 floor(除法), 會傳回兩個值, 商和餘數
(setq a (floor 10 3)) ; 10 除以 3 的商數為 3, 所以 a 是 3
那要怎麼抓到第二個值呢? 要用一個怪指令 @_@
(multiple-value-setq (a b) (floor 10 3)) ; a = 3, b = 1(餘數)
這指令還真長 @_@
如果要將兩個值, 轉為 list 的話
(setq a (multiple-value-list (floor 10 3))) ; a = (3 1)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 221.169.205.162
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章