上篇有个标准的定义动态类变量
class MyClass
class << self
attr_accessor :my_constant
end
def my_method
self.class.my_constant = "blah"
end
end
p MyClass.my_constant #=> nil
MyClass.new.my_method
p MyClass.my_constant #=> "blah"
如果类也动态定义,那么子类和module怎么定义进去的
dynamic_name = "TestEval2"
Object.const_set(dynamic_name, Class.new{def method1() 42 end }})
dummy2 = eval("#{dynamic_name}")
puts "dummy2: #{dummy2}"
dynamic_name = "SubTestEval2"
SubModule.const_set(dynamic_name, Class.new(TestEval2){def method1() 43 end })
dummy3 = eval("#{dynamic_name}")
puts "dummy3: #{dummy3}"
判断动态类是否存在
def class_exists?(class_name)
eval("defined?(#{class_name}) && #{class_name}.is_a?(Class)") == true
end
class_name = "Blorp"
class_exists?(class_name)
=> false
class_name = "String"
class_exists?(class_name)
=> true
define_method定义的方法参数放到哪?
define_method(:say_hi) { |other| puts "Hi, " + other }
分享到:
相关推荐
- **动态性**:Ruby支持运行时修改代码结构,允许开发者在程序运行过程中改变类和方法的行为。 - **元编程能力**:Ruby提供了一种称为元编程的技术,使得程序可以自我修改和自我扩展。 ### 二、Ruby编程基础 #### ...
Ruby是一种动态、面向对象的脚本语言,以其简洁、优雅的语法和强大的元编程能力著称。在这一版中,作者深入浅出地讲解了Ruby 1.9的改进和新特性,旨在帮助开发者更好地理解和利用这个版本的优势。 1. **Ruby 1.9的...
Ruby作为一门流行的面向对象的动态编程语言,其动态类型系统的进化和发展历程是语言发展中的重要组成部分。Ruby的动态类型系统来源于它的前身Smalltalk-80,这门语言为面向对象编程引入了诸多创新性概念,如动态类型...
Ruby支持单一继承,子类可以继承父类的所有属性和方法,并且可以覆盖或扩展父类的行为。 ```ruby class Student def study(subject) puts "I am studying #{subject}." end end ``` **3.4 特殊方法与特殊类** ...
在对Ruby进行了简要的综述之后,《Ruby编程语言》详细介绍了以下内容:Ruby的句法和语法结构,数据结构和对象,表达式和操作符,语句和控制结构,方法、proc、lambda和闭包,反射和元编程,Ruby平台。本书还包含对...
Ruby支持类的继承,允许一个类(子类)继承另一个类(父类)的属性和方法。子类使用`符号指定其父类,如下所示: ```ruby class Student def study puts "I'm studying hard!" end end ``` 在这个例子中,`...
Ruby是一种面向对象的脚本语言,它以其简洁、优雅的语法和强大的编程能力而闻名。本教程旨在为初学者提供一个全面的Ruby语言入门指南,帮助他们快速掌握这门语言的基础知识。 首先,Ruby的核心设计理念是“人本主义...
在学习Ruby之前,我们首先需要掌握其基础语法,这包括变量、常量和数据类型的定义及使用,以及运算符和控制流语句。随后,我们将深入面向对象编程,探讨类、对象、继承和多态。了解了基础语法和面向对象编程后,我们...
- **动态方法定义**:Ruby允许在运行时动态定义方法。 - **动态类修改**:可以在运行时修改类的定义,包括添加新方法和属性。 ##### §3.8 变量 - **局部变量**:作用域仅限于定义它的方法内部。 - **实例变量**:...
- **条件语句**:`if` 和 `unless` 是Ruby中的主要条件判断语句。它们可以用来根据不同的条件执行不同的代码块。例如: ```ruby if age >= 18 puts "You are an adult." else puts "You are not yet an adult....
- 继承:通过使用“<”符号定义子类继承父类的属性和方法。 - 封装:通过方法控制对对象内部状态的访问。 - 多态:通过方法重载或动态方法查找实现多态。 7. 高级主题: - 块(blocks)、迭代器和闭包:Ruby块...
- **动态性**:Ruby是一种动态类型语言,可以在运行时修改类和对象的行为。 - **可扩展性**:Ruby可以通过扩展库来增强其功能,这些库通常以C语言编写,以提高性能。 #### 三、Ruby的安装与使用 - **下载与安装**...
2. 类和模块的定义在运行时:同样,类和模块也可以在程序运行过程中动态创建。 3. `eval`函数:可以接收一个字符串作为参数,将其作为Ruby代码执行。 四、Ruby on Rails框架 Ruby on Rails(简称Rails)是Ruby的...
- **动态性**:Ruby是一种动态类型语言,支持运行时修改类和方法。 - **面向对象**:几乎所有的Ruby代码都是对象,包括基本数据类型如整数和字符串。 - **灵活性**:Ruby允许开发者定义自己的语法结构,具有很高的...
Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。本"Ruby学习指南"旨在帮助初学者快速掌握Ruby的基础知识,同时也为有一定经验的开发者提供深入学习的资源。 1. **Ruby...
Ruby提供了丰富的元编程接口,例如动态定义方法和属性、使用元类等高级特性,这些特性使得Ruby非常适合于需要高度抽象和灵活性的场合。 Ruby的这些特性,无论是对于初学者还是经验丰富的开发者,都提供了一种简洁、...
Ruby中的类还可以继承,通过`操作符定义子类,并可以使用`super`关键字调用父类的方法。 三、控制结构 Ruby提供了多种控制结构,如条件语句(if/else, case)、循环(for, while, until, each)和流程控制语句...
Ruby提供了多种方式来实现元编程,如动态方法定义、类扩展、钩子方法等。通过元编程,Ruby程序可以在运行时修改自身的行为,这为编程提供了极大的灵活性。 Ruby语言以其简洁的语法、面向对象的特性和强大的元编程...
索引功能安装构建用法管理Ruby的虚拟机调用Ruby方法定义Ruby方法定义Ruby类定义Ruby子类捕获Ruby异常平台支持库比较Rosy与Helix Rosy与Rutie作者许可功能性能:Rosy使您可以编写性能最高的代码,因此直接使用C API...