Ruby剖析笔记

一、查找过程总结

  1. 查找方法

查找方法是顺着继承关系查找

  1. 查找变量

查找变量是按照词法作用域查找

所以代码的执行是一个这样的过程,一边扫描一边执行,读一块代码,生成对应的词法结构,使用指针记录上下文。

遇到变量的时候,主要是闭包的过程,开始顺着词法作用域,查找到变量。

如果变量是对象,调用方法,那么沿着对象的 自身、单例、父类、超父类继承链条向上查找。

二、块

1. 块是闭包

虽然块(block)被叫做block,这是按照形式去描述的名字。

他的类归属于 Proc,也就是 “程序、步骤”的意思,这里取步骤比较合理。

其实块就是闭包的应用。

2. 函数是一等公民

“函数是一等公民”的意思是Ruby中允许把函数作为数值保存在变量中或者作为参数传递。 Ruby中使用块来实现这些理念。

(区别于一些使用function实现的,块才是Ruby中原子性封装逻辑的存在)

3. 闭包和环境引用

lambda或者proc 关键字会把块转换为数值,但是记住,块是Ruby的闭包实现,这意味着新的数据值一定以某种方式同时包含块代码和环境引用。

(闭包的特别就是保持环境应用,可以顺着词法作用域查询变量)

Mark24

Everything can Mix.