ruby 的代码块

  • 在调用代码块的时候,想要传入参数,普通参数需要写在&block参数前
    一个关于代码块基础的小实验:
class A
  def a(v1, v2, v3)
    puts 'hello!'
  end

  def b(&block)
    block.call
  end

  def c(trail, &block)
    if trail.present?
      puts "ok"
    else
      if block_given?
        block.call
      end
    end
  end

  def d(_v, &block)
    if _v.present?
      puts "ok"
    else
      if block_given?
        block.call('block')
      else
        puts 'no block'
      end
    end
  end
end

# aa=A.new
# aa.c('trail') {puts 'nice'}   => ok
# aa.c('') {puts 'nice'}        => nice
# aa.c('')                      => nil
# aa.c(true) {}                 => ok
# aa.c(true) {puts 'axu'}       => ok
# aa.c('') {puts 'axu'}         => axu
#
# aa.d('a') {|i| puts i}        => ok
# aa.d('')  {|i| puts i}        => block
# aa.d('')                      => no block

2017-09-26

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值