Re: [問題] block和array的傳遞
※ 引述《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 有關 ?
: 還是完全沒有關係 ??
--
"問おう、貴方が私のマスターか?"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.81.146
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章