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