1 动态的evaluate代码
全局的方法eval 编译并且执行一段包含ruby代码片断的字符串,这是一个很power的机制,因为它允 许你建造在运行时
执行的代码。看下面的例子:
Ruby代码
parameters = {} ARGF.each do |line| name, expr = line.split(/\s*=\s*/, 2) parameters[name] = eval expr end
假设输出是这样的:
引用
a = 1
b = 2 + 3
c = `date`
然后你的parameters 应该是这样的{"a"=>1, "b"=>5, "c"=>"Mon Apr 30 21:17:47 CDT 2001\n"}. 不过这样的话,危
险性很高,假设你传入一个 "rm *"那么就很郁闷了。
ruby有三个方法来做到在运行时evaluate代码,class_eval, module_eval, 和instance_eval,前两 个是同义的,而这三
个方法其实所做的事都是一样的,他们都是evaluate 一个字符串,或者一个block,但是在做这件事 的时候,他们会把
self改变为他们自己的接收者.如果你想看一些例子,推荐你去看ruby的内置库delegate.rb.
eval 方法还能够在局部变量的创建域外面调用evaluate.
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索字符串
, 方法
, 代码
, ruby
, parameters
一个
the ruby way 3rd pdf、the ruby way、the ruby way pdf、learn ruby hard way、the ruby way中文版,以便于您获取更多的相关知识。