ruby
墨城之左
形而上者谓之道,形而下者谓之器。
展开
-
深入理解 ruby 中的 eval 与 binding
eval(expr[, binding[, fname[, lineno=1]]])eval 可以把字符串当做代码来执行,并返回结果;第二个参数如果是 Proc 对象或 Binding 对象,将在生成该对象的环境中对字符串进行解析执行。示例 1 main 环境irb(main):001:0> var = "hello ruby"=> "hello ruby"irb(main):002:0> ev原创 2017-09-05 18:44:26 · 4877 阅读 · 0 评论 -
Ruby 代码块及其作用域详解
转自:http://ningandjiao.iteye.com/blog/1860099块的定义、调用与运行 在Ruby中,定义一个代码块的方式有2种 ,一是使用do … end, 另外一种是用大括号“{}”把代码内容括起来。代码块定义时也是可以接受参数的。但是,只有在调用一个方法的时候才可以定义一个块。 块定义好之后,会直接传递给调用的方法,在该方法中,使用“yield”转载 2017-09-06 13:25:24 · 901 阅读 · 0 评论 -
深入理解 Ruby 中的 instance_eval 和 class_eval
Ruby 通过 eval 可以将字符串当做代码来执行,而执行环境是通过 binding 进行绑定的;除此之外,Ruby 还有另外两个方法:instance_eval 和 class_eval, 用来执行代码块。后者的执行上下文与调用者相关。instance_eval: 调用者必须是实例 instance; class_eval: 调用者必须是类 class;下面的例子帮助识别两个方法的区别:[1]原创 2017-09-06 17:27:18 · 2422 阅读 · 0 评论