看板 Ruby 關於我們 聯絡資訊
: → 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
leondemon:我覺得splat operator符號改成用^ 或許就不會發生這情形 05/28 12:18
godfat:那不是也撞到 xor 了? XD 05/28 17:09
leondemon:我的意思是考慮把splat operator換成別的不會互衝的符號 05/29 12:43
leondemon:這樣就可以避免和數學運算符號衝突到了... XD 05/29 12:44