Re: [問題] block和array的傳遞

作者: uranusjr (←這人是超級笨蛋)   2013-06-21 10:00:21
※ 引述《lemonstar ( )》之銘言:
: 在function中傳遞參數時
: 傳遞array是使用 "*" 符號
: def f( a , *arg )
: end
這個應該是從 Python 抄來的, 我目前沒看過有比這個更早的來源
Python 可以有這種語法
def foo(*args, **kwargs):
print args[2], kwargs['b]
a = [1, 2, 3]
b = {'a': 'A', 'b': 'B'}
foo(*a, **b) # 3 B
至於為什麼選 * 就沒有定論了
主流猜測應該是從 C 的 dereference operator 來的沒錯
: 傳遞block是使用 "&" 符號
: def f( a , opts={} , &block )
: end
這個應該是 Ruby 特有的, 來源或許就是因為有 * 所以想到用 & 吧
: 這兩個operator設計有什麼緣由嗎 ?
: 一直在想是不是跟 C 的 pointer 以及 reference 有關 ?
: 還是完全沒有關係 ??

Links booklink

Contact Us: admin [ a t ] ucptt.com