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 <
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



