`

我见过最清楚的解释class_eval 和 instance_eval

阅读更多
忘了,看一次就能回忆起来
class A
  # defs here go to A
  puts self  # => A
  class << self
     #defs here go to A's eigenclass
  end
end

A.class_eval do
  #defs here go to A
end

A.instance_eval do
  #defs here go to A's eigenclass     
end

s = "Hello World"

class << s
  #defs here go to s's eigenclass
end
分享到:
评论

相关推荐

    Ruby Meta Programming: define_method or class_eval

    `define_method`和`class_eval`是Ruby元编程中的两个关键方法,它们被广泛用于动态地添加方法到类或者模块中。这篇文章将深入探讨这两个方法的用法和区别。 `define_method`方法允许我们传递一个符号和一个代码块来...

    详解Ruby中的instance_eval方法及其与class_eval的对比

    ### Ruby中的instance_eval方法及其与class_eval的对比 #### 一、instance_eval方法详解 **instance_eval** 方法属于Ruby语言中的eval家族成员之一,它的主要功能是将一个代码块(通常是一个包含Ruby代码的字符串...

    java动态特性eval

    在模拟`eval()`功能时,我们可能需要使用`Class.forName()`加载类,`Method.invoke()`执行方法,或者`Constructor.newInstance()`创建对象。通过这些反射方法,我们可以解析字符串并执行相应的Java代码。 2. **Java...

    Core-Ruby-1:2014 年 10 月开始的 Core Ruby 课程的报告

    核心-Ruby-1 类的存储库。... 不要作恶:class_eval 和 instance_eval。 常量、实例变量 API。 6 自由修补。 改进。 关键字参数。 在 2.1 中风靡一时。 7 线程或:我如何学会停止担心并学会热爱 GI

    ruby metaprogramming examples

    6. 实例化时方法注入(Instance_eval & Class_eval):这些方法可以改变当前对象的上下文,允许你访问或修改实例变量和方法。`instance_eval`允许你评估一段代码并将其作用域限定在当前实例上,而`class_eval`则用于...

    metaprogramming_introduction:一篇以源代码形式介绍Ruby元编程基础知识的文章-Form source code

    通过`eval`, `send`, `instance_eval`, `class_eval`, 动态方法定义,以及`Proc`和`Lambda`等工具,开发者能够创建出更具适应性和可扩展性的代码。在实际项目中,合理利用元编程可以提高代码的效率和可维护性,但...

    Ruby元编程第二版中文

    `class_eval`和`module_eval`允许在类或模块上下文中执行字符串或块作为代码。 3. **对象的反射**:`Object#methods`、`Class#methods`等方法返回对象或类可调用的方法列表。`instance_variable_get`和`instance_...

    ruby官方chm文档

    理解如何使用`eval`、`class_eval`和`instance_eval`,以及如何利用`send`和`method_missing`进行消息传递,是提升Ruby编程技巧的关键。 《ruby23.chm》文档可能是整个Ruby语言的综合指南,可能包含前面几个文档的...

    ruby_1_9_3_core_rdocs.gz

    8. **元编程**:Ruby的元编程能力是其一大特色,通过`class_eval`、`instance_eval`和`define_method`等方法,可以在运行时动态修改类和对象的行为。 9. **线程与并发**:Ruby 1.9.3引入了全局解释器锁(GIL),...

    ruby中文文档.chm

    8. **元编程**:探索Ruby的send方法、class_eval、instance_eval等元编程技巧。 9. **Gem和包管理**:了解Ruby的包管理系统RubyGems,以及如何安装和使用第三方库。 10. **Ruby on Rails**:如果文档包含相关内容,...

    Programming Ruby 2nd Edition

    书中会讲解send、class_eval、instance_eval等元编程工具的使用。 6. **标准库**:Ruby的标准库提供了大量实用的模块和类,如File、Net、Time等,可以帮助开发者快速实现各种功能。 7. **Ruby on Rails**:虽然...

    Ruby-Way.rar_About Language

    例如,你可以使用`define_method`动态定义方法,或者使用`class_eval`或`instance_eval`在运行时改变类的行为。这种特性极大地增强了代码的灵活性和可扩展性。 《Ruby Way》一书还会详细介绍Ruby的Gem包管理器,Gem...

    一些高质量的学习Ruby的资源清单.zip

    了解 `class_eval`、`instance_eval`、`define_method` 等方法可以帮助你更深入地掌握这一特性。 6. **测试驱动开发(TDD)**:Ruby 社区强调 TDD,因此熟悉 RSpec 或 MiniTest 这样的测试框架是必要的。学会编写...

    [Ruby完全自学手册].邓蔚.扫描版

    例如,读者将学习到如何使用 `class_eval` 和 `instance_eval` 动态定义类和方法,以及 `send` 方法的用法。 此外,本书还会涵盖Ruby的错误处理和异常处理机制,以及测试驱动开发(TDD)和集成测试的相关知识,帮助...

    脚本编程之: ruby_bcyy_jb51.net

    6. **元编程**:Ruby的元编程特性,如`class_eval`、`instance_eval`、`method_missing`等,以及如何利用它们来增强代码的动态性。 7. **测试驱动开发(TDD)**:Ruby社区非常注重TDD,因此可能包含关于Rspec或Test::...

    ruby 帮助文档资料

    通过`eval`函数、`instance_eval`、`class_eval`等方法,开发者可以在运行时动态修改或创建代码。这使得Ruby在构建高度自定义和灵活的系统时具有极大的优势。 Ruby的工具生态也非常丰富,其中最著名的是Ruby on ...

    ruby 中文文档 入门必学

    文档会讲解如何使用`send`方法动态调用方法,`class_eval`和`instance_eval`等方法改变类结构,以及定义方法的动态方式(如`define_method`)。 5. **异常处理**:Ruby中的异常处理使用`begin/rescue/ensure/end`...

    ruby中文教程,从基础到深入的让你学习ruby

    Ruby提供了许多工具来进行元编程,如`eval`函数可以执行字符串中的代码,`class_eval`和`instance_eval`允许在运行时修改类或对象的行为。此外,Ruby的`send`方法可以动态调用方法,`method_missing`可以捕获未定义...

    ruby设计模式的代码有好多

    Ruby的元编程能力,如`class_eval`、`instance_eval`和`define_method`等方法,使得动态修改类和对象的行为变得容易,这在实现某些设计模式时特别有用。例如,元编程可以用来在运行时添加方法,实现动态代理或者创建...

Global site tag (gtag.js) - Google Analytics