- 浏览: 51649 次
- 性别:
- 来自: 青岛
文章分类
最新评论
Ruby的evaluation是一个很重要的功能,它可以eval一个字符串或者一个block。在一些适宜的情况下使用它会得到一些“意外”的效果。 常用的eval Ruby常用的evaluation有:class_eval (module_eval),instance_eval ,eval 。 这三种evaluation方法可以在不同的情况下使用: 1. class_eval class_eval和module_eval是相同的,class_eval是module_eval的一个alias。 class_eval可以在一个mod的上下文中eval一个字符串或者一个block,常用于给一个类添加方法(实例方法): 2. instance_eval instance_eval可以在一个实例的上下文中eval一个字符串或者一个block: 3. eval eval是在当前上下文中eval一个字符串,如果指定一个binding,则在binding的上下文中eval。 class_eval和instance_eval的不同 首先注意到class_eval和instance_eval的不同主要在于执行上下文(context)的不同。class_eval在一个mod的上下文中执行,而instance_eval在一个实例的上下文中执行。 其次,他们的常用场景不同。class_eval的应用场景一般是“打开一个类”来做一些事情,比如增加方法,或者是include一个module。 而instance_eval主要关注于一个实例。 当然,我们也同样可以通过class_eval给Paginator类增加一个方法来获取page_index。 在我们了解instance_eval和class_eval之前,很可能会误用它们,比如通过下面的方法给Paginator增加一个实例方法: 结果: 但我们偶然发现: 其实,如果我们了解ruby的对象模型,对这个结果并不会意外。我刚才已经说过:instance_eval关注于一个实例,它是在一个实例的上下文中执行的。Paginator类本身就是一个Class类的实例,所以Paginator.instance_eval做的就是给这个Class实例--Paginator--增加一个方法,也就是Paginator的类方法。 同样,我们可以通过instance_eval给任意类的实例增加方法,比如: 这个opposite方法就是"good"实例的一个singleton method。 instance_eval和DSL DSL的一个主要特点是可以在不同的上下文中执行,下面就是一个例子(窃取自Jay Field举的例子): 简单得介绍了一下ruby的evaluation,要了解更多,可以看下面这两篇文章: http://www.infoq.com/articles/eval-options-in-ruby http://blog.jayfields.com/2007/03/ruby-instanceeval-and-classeval-method.html
发表评论
-
Ruby的include和extend
2011-12-28 15:17 1424在ruby中基本上有三种引入module的方式 一、在 ... -
rails之 最有用的eval族方法:class_eval
2011-12-26 17:02 1301从本质上讲,class_eval(也就是module_ev ... -
alias, alias_method和alias_method_chain
2011-12-26 16:34 874本文介绍Ruby里的几个关键字。 1. alias ... -
Ruby学习笔记-Block, Proc and Lambda
2011-12-08 14:08 10501.Block: Ruby中的块就是由多行代码组成 ... -
Symbol
2011-12-08 11:25 911Symbol 在Ruby中,有一种奇怪 ... -
rvm 使用 -- ruby 1.9.2 rails 3.1.2
2011-11-21 16:35 1633RVM可以管理不同的ruby,也可以管理同一个ruby下 ... -
hash 和 array 的一个用法
2011-11-01 14:21 719a=[[1,2],[3,4]] Hash[*a ... -
按位与、按位或组合
2011-10-20 18:52 1178下午 看了下 按位与、按位或组合 权限串应用 ... -
gem 降级
2011-10-09 17:21 1967gem uninstall rubygems- ... -
render vs redirect
2011-08-15 15:53 982render和redirect的区别在于: rende ... -
ruby 正则匹配非站内链接
2011-08-01 16:48 960def has_href_not_XXX?(content ... -
form_for && form_tag
2011-07-27 13:47 959<% form_for @XX, :url => ... -
好吧,就这么写了
2011-07-16 17:02 540以后写代码 就按这个思路来 先写 伪代码 再写 ... -
.nil? , .empty?, .blank? .present? 的区别
2011-04-08 17:02 3498首先这三个都是判空的。 而 .nil? 和 .empty? 是 ... -
Ruby的类
2011-03-31 11:40 960类的基本定义 class Myclass #注意类名必须是常量 ... -
private和protected在ruby和Java里的区别:
2011-03-31 10:15 10831、在不同对象实例当中的作用域不同 Java当中,不管priv ... -
java转ruby
2011-03-31 10:14 756换了新工作,开始学习ruby,干了一段时间的java,有必要停 ...
相关推荐
- 使用评估(Evaluation)和反射(Reflection)技术。 - 扩展和覆盖内置行为。 6. **测试与调试** - Ruby提供了丰富的测试框架,如RSpec和Test::Unit等。 - 单元测试(Unit Testing)、集成测试(Integration Testing)...
在语言处理系统方面,本书介绍了实现一门编程语言所需掌握的各种知识,例如哈希表、扫描器(scanner)、解析器(parser)、评估过程(evaluation procedure)等。作者尝试全面覆盖实现一门语言所需的各个主题。尽管...
ImageCLEF始于2003年,作为Cross-Language Evaluation Forum (CLEF)的一部分,旨在为跨语言图像检索系统提供一个标准化的评估框架。经过七年的持续运行和发展,ImageCLEF已经成为视觉信息检索领域中一个重要的基准...
6. **评估(Evaluation)**:Ruby的`eval`函数允许程序执行字符串形式的代码,这可以用来构建动态的代码生成器或解释器。虽然`eval`的使用需要谨慎以避免安全问题,但它仍然是元编程中一个重要的工具。 7. **代码生成...
### Weka Evaluation 类详解 #### 一、引言 在机器学习领域,评估模型的性能是十分关键的步骤。Weka 是一款非常流行的开源数据挖掘工具包,它提供了丰富的算法库以及模型评估功能。其中,`Evaluation` 类是用于...
Leveson在《An Experimental Evaluation of the Assumption of Independence in Multi-Version Programming》中提出的观点。文章的核心是评估多版本编程(N-version programming)中的独立性假设的有效性,并通过...
This is the halcon 13 evaluation and development license in March 2018
Reservoir evaluation using petrophysics informed machine learnin
A nonlinear evaluation of a tubular adhesive scarf joint loaded in tension and in torsion
The Application of AHP+LP in the Evaluation and Selection of Suppliers,BAI He-song,,This paper introduces the Supplier Relationship Management and the evaluation and selection of suppliers....
Machine learning evaluation metrics, implemented in Python, R, Haskell, and MATLAB Octave.zip
Xilinx_Virtes-4_Evaluation Kit 资料大全 1).Xilinx Virtex-4 Evaluation Kit - BOM 120204F.pdf 2).Xilinx Virtex-4 Evaluation Kit - Configuration Reference Manual 120104.pdf 3).Xilinx Virtex-4 ...
DICOM(Digital Imaging and Communications in Medicine)是一种广泛应用于医疗领域的标准文件格式,它允许医学影像如CT、MRI、X光等在不同的设备和系统之间进行交换和共享。 描述中提到这款工具对于BMP到DICOM的...
《ATS Evaluation{1.0.1.16}:基于LabVIEW的TestStand测试系统评估与实践》 在现代工业自动化领域,测试系统的构建与优化是确保产品质量与可靠性的重要环节。TestStand作为NI(National Instruments)公司推出的一...
PowerDesigner165_Evaluation.1428562995.exe
Transmission Control Protocol evaluation in NS2
标题中的"In-Program Evaluation"指的是在程序运行过程中进行的评估或测试,这通常涉及到软件开发中的调试、性能分析和质量保证。这样的评估可以帮助开发者更好地理解程序的运行状态,找出潜在问题,优化性能,或者...
本文将深入探讨“2022.06_evaluation_support_licenses”这一主题,重点关注Halcon这款机器视觉软件的2022年6月版本的许可证及其相关知识。 首先,我们需要了解Halcon是什么。Halcon是由德国MVTec公司开发的一款...