作者Schelfaniel (Test)
看板Ruby
标题[闲聊] Ruby 传入值及传回值的 ,
时间Sat Aug 19 21:18:09 2006
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