关于yield关键字的一些理解

在ruby中,为什么有些方法能够接收参数变量又能接收代码块呢?这是因为啊,这些方法有一种机制来传输这些代码块,运行完之后再返回。我们可以在一个方法中定义这样一种机制,用yield关键字就可以啦。

看一下这段代码:

def block_test
  puts "We're in the method!"
  puts "Yielding to the block..."
  yield
  puts "We're back in the method!"
end

block_test{puts "I'm yielding!"}
运行之后是这个样子的:

We're in the method!
Yielding to the block...
I'm yielding!//代码“注入”
We're back in the method!
==> nil
整体感觉就像是在一段代码中注入了一段代码的样子

当然,强大的ruby还允许你注入的代码得到一个参数变量,这样就就能做更多事情了#^_^#

def yield_name(name)
  puts "In the method! Let's yield."
  yield name
  puts "Block complete! Back in the method."
end

# Now call the method with your name!
yield_name("Gonjay") {|myname| puts "My name is #{myname}."}
在yield_name方法运行到yield关键字的时候就传了一个name参数给你之前丢过去的代码块,然后被你代码块中的myname所接收,最后打印出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值