Ruby中hash作为函数参数特殊性比较

a = {1 => 'one',2=>'two'}
b = ['three','fore']
def show(x,y)
  p x
  p y
end

用这段代码来进行试验。

show(2,a)
得:
2
{1=>"one", 2=>"two"}


show(2,1 => 'one',2=>'two')
得:

2
{1=>"one", 2=>"two"}


show(2,b)
得:

2
["three", "fore"]


show(2,'three','fore')
得:
1.rb:12:in `show': wrong number of arguments (3 for 2) (ArgumentError)
    from 1.rb:12


show(a,2)
得:

{1=>"one", 2=>"two"}
2


show(1 => 'one', 2=>'two')
得:

1.rb:16:in `show': wrong number of arguments (1 for 2) (ArgumentError)
    from 1.rb:16


show(1 => 'one',2=>'two',2)
得:

1.rb:15: syntax error, unexpected ')', expecting tASSOC
show(1 => 'one',2=>'two',2)
                           ^


由此可知,当hash作为参数时,只有在最后一个参数的位置传入时不会出错,并且会将若干hash对看成一个元素,所以我们在编程时尽量将hash参数放在最后面。

以上试验在1.8.6版本中进行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值