`

define accessor in method

阅读更多
ruby 代码
 
  1. # main.rb  
  2. # 2007年8月8日  
  3. #  
  4.   
  5. module A  
  6.   def nothing  
  7.     attr_accessor :a  
  8.   end  
  9. end  
  10.   
  11. class B  
  12.     
  13. end  
  14.   
  15. B.extend A  
  16. B.nothing  
  17. p B.methods  
  18. p B.instance_methods  
  19. b = B.new  
  20. b.a = 20  
  21. p b.a  
分享到:
评论

相关推荐

    MetaProgramming-Play:重写 Ruby 注入方法以了解元编程

    使用define_method创建Ruby 内置attr_accessor方法的布尔版本。代码片段: 使用define_method attr_accessor方法 def self . attr_accessor? ( attr ) read_method = " #{ attr } ?" write_method = " #{ attr } =...

    Ruby In a Nutshell

    - `send`方法可以调用对象的任何方法,`define_method`用于在运行时定义方法。 10. **Gem和Ruby生态系统** - Ruby的包管理器是`gem`,用于安装、管理和更新第三方库。 - Rails是Ruby最著名的Web开发框架,它基于...

    Google C++ Style Guide(Google C++编程规范)高清PDF

    Header Files The #define Guard Header File Dependencies Inline Functions The -inl.h Files Function Parameter Ordering Names and Order of Includes Scoping Namespaces Nested Classes Nonmember, Static ...

    Ruby是一种强大而优雅的编程语言,以其简洁的语法、动态性、面向对象编程和丰富的类库而著称 以下是对Ruby的500字资源介绍:

    def self.define_method(name, &block) define_method(name, &block) end define_method(:greet) { "Hello!" } ``` #### 四、面向对象编程 作为一门纯粹的面向对象语言,Ruby将一切视为对象,包括基本的数据...

    Meta Programming Ruby

    - **动态方法定义**:假设有一个应用程序需要动态地根据用户的输入来定义新方法,可以使用`define_method`轻松实现这一点。 ```ruby class Calculator def self.define_operation(operation_name, &block) ...

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

    define_method(:new_method) { puts 'New method defined!' } end MyClass.new.new_method # 输出 "New method defined!" ``` 在这两个例子中,`instance_eval`使我们能直接访问对象的实例变量,而`class_eval`则让...

    Effective Java 3rd edition(Effective Java第三版英文原版)附第二版

    Item 16: In public classes, use accessor methods, not public fields Item 17: Minimize mutability Item 18: Favor composition over inheritance Item 19: Design and document for inheritance or else ...

    详解Ruby中的单件方法和单件类

    2. **使用 `define_singleton_method`**:可以通过 `Object#define_singleton_method` 方法定义单件方法。 ```ruby str = "justaregularstring" str.define_singleton_method(:title?) do self.upcase == self ...

    ruby metaprogramming examples

    2. 动态方法定义:Ruby提供了一些内置方法,如`define_method`,使得开发者可以动态地定义新方法。这一点非常有用,尤其是当你需要根据不同的条件创建不同的方法时。 3. 类的开放(Open Classes):Ruby允许你在不...

    Ruby中钩子方法的运用实例解析

    首先,使用`eval`创建了`add_checked_attribute`方法,然后逐步优化,去除`eval`,改用`class_eval`和`define_method`动态定义方法。最终的目标是创建一个可在任何类中使用的`attr_checked`宏,通过引入特定模块实现...

    oo_lesson_5

    例如,`define_method`可以用来定义方法: ```ruby def add_method(name, &block) define_method(name, &block) end add_method :greet do puts "Greetings!" end object.greet ``` 7. 模块(Module):...

    Ruby从入门到精通pdf

    - eval()函数可以执行字符串形式的代码,define_method动态定义方法。 7. **Rails框架**: - Ruby on Rails是Ruby最著名的Web开发框架,它遵循MVC架构,提供了许多开箱即用的功能,如ActiveRecord数据库操作、...

    Ruby元编程第二版中文

    1. **方法定义与调用**:Ruby允许在运行时定义和修改方法,如`define_method`函数可以动态创建方法,而`send`或`__send__`则用于在运行时调用方法。 2. **类与模块操作**:Ruby的`Class.new`和`Module.new`可以用来...

    ProgrammingWithObjectiveC

    #### Dot Syntax Is a Concise Alternative to Accessor Method Calls 除了使用访问器方法外,还可以使用点语法来访问属性值。这种方式更加简洁。 #### Most Properties Are Backed by Instance Variables 大多数...

    Ruby语言中文教程

    `class_eval`和`define_method`等方法可以帮助你在程序运行时动态创建或修改类。 6. **Gem包管理** - Ruby的生态系统依赖于Gem包管理器,学习如何安装、更新和管理Gem,以及编写Gemspec文件来发布自己的库。 7. *...

    设计模式

    attr_accessor :instance end def initialize @state = "I'm the only one!" end def self.instance @instance ||= new end end singleton_instance = Singleton.instance ``` 二、工厂方法(Factory ...

    C++实现反射机制

    对于字段访问,可以设计一个`Accessor`类,存储字段的获取和设置操作。 ```cpp struct Invoker { virtual ~Invoker() {} virtual void operator()(void* obj, Args... args) = 0; }; template , typename C, ...

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

    Ruby中的`module_function`、`define_method`等方法允许在运行时定义新方法或修改现有方法。这种能力使得自定义类和模块变得非常简单,这对于构建高度可配置的系统非常有用。 #### 2.3 运行时检查与修改 Ruby提供了...

    programming with objective c

    #### Dot Syntax Is a Concise Alternative to Accessor Method Calls 点语法是访问器方法调用的一种更简洁的替代方案。通过使用点语法,可以直接通过属性名称来访问和修改属性值。 #### Most Properties Are ...

Global site tag (gtag.js) - Google Analytics