Ruby meta programming 4(eval/class_eval/module_eval/instance_eval)
来源:互联网 发布:cisco端口看环路 编辑:程序博客网 时间:2024/06/08 02:07
之所以有不同的eval方法,只是因为在不同的上下文中;你也可以使用eval+bind参数完全替换class_eval/module_eval/instance_eval的
# "#{exp}" evaluates it as a string and not as an expression, whereas eval( exp ) evaluates a string as an expression.exp = "2+4"puts( eval( exp )) puts( "#{exp}" ) # eval method can evaluate strings spanning many lineseval( 'def aMethod( x ) return( x * 2 ) end num = 100 puts( "This is the result of the calculation:" ) puts( aMethod( num ))' ) # special types of evalclass MyClass def initialize @aVar = "Hello world" end end ob = MyClass.new p( ob.instance_eval { @aVar } ) p( ob.instance_eval( "@aVar" ) ) # eval can evaluate expressions of arbitrary complexity# such ass create method to String classString::class_eval{ define_method(:bye){ puts("goodbye" ) } } "Hello".bye #=> “goodbye”
0 0
- Ruby meta programming 4(eval/class_eval/module_eval/instance_eval)
- Ruby instance_eval 与 class_eval
- Ruby class_eval(module_eval)现形记
- 【Ruby】instance_eval和class_eval用法讲解
- 深入理解 Ruby 中的 instance_eval 和 class_eval
- [Ruby] ruby创建类方法 ,以及class_eval 、instance_eval的使用
- ruby的class << self, 及其class_eval和instance_eval的区别
- ruby的class << self, 及其class_eval和instance_eval的区别
- ruby的instance_eval和class_eval, self && current class
- ruby的class << self, 及其class_eval和instance_eval的区别
- ruby的class << self, 及其class_eval和instance_eval的区别
- class_eval,class_exec,instance_eval,instance_exec
- include, extend, module_eval, class_eval 比较
- instance_eval,class_eval,def以及define_method
- instance_eval与class_eval的区别
- instance_eval(instance_exec) 和 class_eval(class_exec)
- Ruby meta programming 3(closure)
- ruby class_eval的使用
- 《关于大数据的一些基本常识整理》
- GridView/ListView与ScrollView冲突解决办法
- linux源码编译的过程
- LINUX 单个用户访问权限控制(ACL)
- vbs批量修改文件名
- Ruby meta programming 4(eval/class_eval/module_eval/instance_eval)
- FPGA实现排序
- JNI中的log日志
- javascript里的&&和||操作符
- Installing Redmine
- oracle数据库日常使用总结
- Git 命令总结
- FAQ的含义
- Same Tree Leetcode