20、Ruby 中块的使用与应用模式

Ruby 中块的使用与应用模式

1. 从 Proc 到块

在将一段可传递的代码传递给方法之前,若想提前准备好这段代码,将 Proc 转换为块往往很有用。也许使用该块的代码并不具备创建它所需的信息,又或许你想保存它以便能在不同地方传递和复用。无论出于何种原因,在 Proc 前加上一个 & 符号就能将其转换为块。

proc = lambda { |x|
  "Totally not #{%w(a e i o u).include?(x[0,1]) ? 'an' : 'a'} #{x}"
}
puts ["lion", "iguana", "antelope"].collect &proc
# Prints:
# Totally not a lion
# Totally not an iguana
# Totally not an antelope

2. 作用域实验

深入理解方法、Proc 和块与环境中变量的绑定方式,对于自如运用它们至关重要。Ruby 处理方法的方式,对于面向对象语言的开发者来说或许并不陌生,只是方法能作为对象被捕获并传递这一点可能有些特别。但 Proc 和块初次接触时会让人觉得新奇,所以通过实际操作来观察它们的工作方式,比单纯阅读关于绑定和作用域的文字描述更有必要。

2.1 实验背景

实验涉及两个有着隐藏议程却要维持公众形象的对象:五角大楼(Pentagon)和克里姆林宫(Kremlin)。

class Pentagon < 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值