經常會看到 argument
和 parameter
兩個很類似,卻代表的不同意義。
另外也有許多符號 * ** & 可以使用。
介紹
argument(actual argument 實際的值) 引數 「呼叫端」傳給呼叫對象的「值」
parameter(formal parameter 代表參數的符號) = 參數 「被呼叫端」用來接收引數的「變數」
範例
有預設值的 parameter
要相連在一起
1 2 3 |
|
傳入參數時,會先將值帶入沒有預設值的 a
,在緊接著給最左邊的 c
1 2 3 4 5 6 7 8 9 |
|
預設值的位置不同,結果也不一樣
1 2 3 4 5 6 7 8 9 |
|
* Array
- 當
parameter
前面加上*
代表Array
的意思 - extract_options!
1 2 3 4 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
另一種用法將 Array 展開來
1 2 3 4 5 6 7 8 9 10 |
|
1 2 3 4 5 6 7 8 9 10 |
|
** Hash
- 當
parameter
前面加上**
代表Hash
的意思 - 一定要擺到最後一個
- 只能有一個
- 並且要傳入的是
Hash
- 傳入的值若不是在最後面,要加上
{}
,預設會將後面所有的key-value
包成一個Hash
即使後面不加
**
預設也會將後面的值都包成一個 hash
1 2 3 4 5 6 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
另一種用法將 Hash 展開
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
& 區塊傳遞
若要調用在變數,前綴一個『&』符號,並且要放在最後一個
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
綜合使用
1 2 3 4 5 6 7 8 |
|
若最後面是 * 不限制長度,塞很多變數,或是後面接 hash 都不會錯
1 2 3 4 5 6 7 8 9 |
|