[閒聊] Ruby 的傳回值的 , (multiple-value)

看板Ruby作者 (Test)時間18年前 (2006/08/19 20:56), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
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
文章代碼(AID): #14vmg0gn (Ruby)
文章代碼(AID): #14vmg0gn (Ruby)