`

Ruby的class_eval和instance_eval

阅读更多
class Blog

  def one

     p "method one"

  end

  def self.two

    p "method two"

  end

private

  def three

    p "method three"

  end

end

1、

blog = Blog.new

blog.one #=> ""method one"

2、

Blog.two  #=> "method two"

3、

blog = Blog.new

blog.instance_eval do

  three

end

#=> "method three"

4、

Blog.class_eval do

  def four

      p "method four"

  end

end

blog = Blog.new

blog.four #=> "method four"

5、

Blog.instance_eval do

  def five

      p "method five"

  end

end

Blog.five #=> "method five"

6、

blog = Blog.new

blog.instance_eval do

  def six

      p "method six"

  end

end

blog.six #=> "method six"

0
1
分享到:
评论

相关推荐

    Ruby Meta Programming: define_method or class_eval

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

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

    综上所述,`instance_eval` 和 `class_eval` 都是非常有用的Ruby工具,但它们的应用场景有所不同。`instance_eval` 更适合于在特定实例上执行代码,而 `class_eval` 则是在类级别进行操作的理想选择。

    ruby_1_9_3_core_rdocs.gz

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

    脚本编程之: ruby_bcyy_jb51.net

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

    RubyNotesForProfessionals.zip_Ruby编程_Ruby_

    `class_eval`和`instance_eval`等方法是元编程中的常用工具。 8. **标准库**: Ruby拥有丰富的标准库,包括网络通信、文件处理、日期和时间处理等多个方面,极大地简化了开发工作。 9. **Gem**: Gem是Ruby的包管理...

    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语言的综合指南,可能包含前面几个文档的...

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

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

    Programming Ruby 2nd Edition

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

    ruby中文文档.chm

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

    ruby metaprograming

    instance.singleton_class.class_eval do def unique_method puts "This is a unique method." end end instance.unique_method # 输出: "This is a unique method." ``` ##### 2. 开放类(Open Classes) 在...

    Ruby-Way.rar_About Language

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

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

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

    ruby metaprogramming examples

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

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

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

    《Ruby元编程》PDF版本下载.txt

    - **灵活性**:Ruby提供了丰富的API来支持元编程,如`eval`, `instance_eval`, `class_eval`等方法,使得在程序运行过程中动态地创建和修改代码成为可能。 - **简洁性**:Ruby的语法设计鼓励简洁明了的代码风格,这...

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

    Ruby还支持`instance_eval`和`class_eval`,它们会改变上下文。`instance_eval`将给定的代码块当作对象的实例方法来执行,而`class_eval`则将代码块当作类或模块的方法执行。例如: ```ruby class MyClass def ...

    ruby API资料

    `class_eval`和`instance_eval`等方法是实现元编程的关键。 - **块和 Proc**:Ruby的块(代码块)是通过`do..end`或花括号`{}`包裹的代码片段,可以传递给方法。Proc对象可以捕获和存储一个代码块,使得它可以被多...

    ruby_with_head_first

    `send`方法、`class_eval`以及`instance_variable_get`和`instance_variable_set`等方法是元编程常用的工具。 5. **标准库和Gem**:Ruby拥有丰富的标准库,涵盖了网络通信、文件系统操作、日期和时间处理等多个领域...

Global site tag (gtag.js) - Google Analytics