ruby方法定义中各种符号

  1. &:定义命名block 一般我们定义一个带block的方法,是这样:
def test
    yield
end
test{ puts "Hello world"}

但是也可以给其一个名字,我还没搞清楚这样做的意义

def test(&block)
    block.call
end
test { puts "Hello World!"}
  1. *: 定义可变参数-array
def test(a, b, *c) 
    c 
end 
test(1, 2, 4, 5) #=> [4, 5]
  1. **:定义可变参数-hash
def test(a, b, **c)
    c
end
test(1, 2, str: 'hello') #=> {str: 'hello'}
test(1, 2, str: 'hello', name: 'wumz') #=> {str: 'hello', name: 'wumz'}

在ruby方法调用中,*可以把数组转化为参数,&可以把Proc或lambda转化为块

转载于:https://my.oschina.net/u/855913/blog/857053

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值