Re: [問題] bug?
: → 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
05/28 12:18, 1F
→
05/28 17:09, , 2F
05/28 17:09, 2F
推
05/29 12:43, , 3F
05/29 12:43, 3F
→
05/29 12:44, , 4F
05/29 12:44, 4F
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章