Re: [問題] bug?

看板Ruby作者 (godfat 真常)時間13年前 (2011/05/28 00:39), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串3/3 (看更多)
: → leondemon:問一下 參數接*2代表什麼意思? 05/28 00 首先那個 * 叫做 splat operator, 接下來看程式解釋: def f a p a end f(*0) 不知道能不能說就如同預期的,印出 0, 雖然 0 並不是 array. 但如果 0 可以轉換成 array 呢? class Fixnum def to_a [1] end end f(*0) 在這邊,ruby 發現 0.respond_to?(:to_a) 是 true, 就會把 0 透過 to_a 轉成 array. 轉出的結果是 [1], 套到 f 上面,得 a 是 1, 這裡印出 a. 也就是說,splat 不一定只能用在 array 上,任何 custom class 都行。 def g a, b, c p a, b, c end class C def to_a [1, 2, 3] end end g(*C.new) 這邊就會一如預期,印出 1 2 3 了 -- 「行け!Loki!」(rocky ロッキー) -Gurumin ぐるみん 王子? XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.160.129

05/28 12:18, , 1F
我覺得splat operator符號改成用^ 或許就不會發生這情形
05/28 12:18, 1F

05/28 17:09, , 2F
那不是也撞到 xor 了? XD
05/28 17:09, 2F

05/29 12:43, , 3F
我的意思是考慮把splat operator換成別的不會互衝的符號
05/29 12:43, 3F

05/29 12:44, , 4F
這樣就可以避免和數學運算符號衝突到了... XD
05/29 12:44, 4F
文章代碼(AID): #1DtzFTRk (Ruby)
討論串 (同標題文章)
文章代碼(AID): #1DtzFTRk (Ruby)