class B
class<<self
def hello
puts "old"
end
end
end
class<<B
unless self.respond_to? :hello
def hello
puts "new"
end
end
end
B.hello
执行结果为new
class B
class<<self
def hello
puts "old"
end
end
end
class<<B
unless B.respond_to? :hello
def hello
puts "new"
end
end
end
B.hello
执行结果为old
这几段代码的作用都是打开类B的单例类,判断是否定义了hello方法,如果未定义,则定义这个方法,但是第一段和第二段代码的执行结果大相径庭。再看两段代码
class B
def self.hello
puts "old"
end
end
class<<B
unless self.respond_to? :hello
def hello
puts "new"
end
end
end
B.hello
执行结果为new
class B
def self.hello
puts "old"
end
end
class<<B
unless B.respond_to? :hello
def hello
puts "new"
end
end
end
B.hello
输出为old
一样的结果 百思不得其解
分享到:
相关推荐
在Ruby中,方法和类是构建程序的基本元素,它们是实现代码重用和组织的关键概念。 ### 方法(Methods) 方法在Ruby中是可重复使用的代码块,它们接受参数,执行特定任务,并可能返回值。方法定义使用`def`关键字...
单例方法是Ruby中的一个重要特性,它允许为特定的对象定义专属的方法。在上述例子中,我们为 `mc` 实例定义了一个单例方法 `the_method`。当调用 `mc.the_method` 时,实际上执行的是单例方法而不是类方法。单例方法...
标题提到的“Ruby-Functo”就是Ruby中实现可组合方法对象的一个库,它为开发者提供了更灵活和模块化的代码组织方式。 Functo库的设计理念是让函数或方法像对象一样可以被操作、组合和复用。在传统的面向对象编程中...
在Ruby中,单例模式可以通过多种方式实现,但最常用的方法之一是利用内置的`Singleton`模块。接下来我们详细探讨几种不同的实现方案。 #### 使用`Singleton`模块 Ruby的标准库中包含了`Singleton`模块,它可以很...
### Ruby 方法详解 #### Ruby 语言简介 Ruby 是一种动态、面向对象的脚本语言,以其简洁、清晰的语法著称。它支持多种编程范式,包括面向对象、命令式和函数式编程,并且拥有强大的元编程能力。Ruby 的设计哲学强调...
- **定义**:单例方法是在特定对象实例上定义的方法,而不是在类级别定义的。 - **示例**:通过在特定对象上定义方法,可以为该对象提供独特的行为。 ##### 5. 常量与变量 - **常量**:Ruby中的常量以大写字母开头...
单例方法是只存在于某个特定类的一个实例上的方法,而不是类的所有实例共享的方法。 **示例**: ```ruby class MyClass; end instance = MyClass.new instance.singleton_class.class_eval do def unique_method ...
Ruby支持方法定义、方法调用、私有方法、单例方法和块作为参数。 5. **元编程**: Ruby的元编程能力非常强大,允许在运行时修改类和对象的行为。这得益于其反射API,例如`class_eval`、`instance_variable_get`等,...
Ruby Ruby Ruby Ruby Ruby Ruby
4. 方法定义:Ruby支持单例方法,可以在类实例上定义方法,增加了灵活性。 5. 元编程:Ruby的强大之处在于其元编程能力,可以在运行时修改或创建类和对象。 Voodoo框架或库可能涉及的知识点: 1. 自动化工具:如果...
单例方法允许开发者为单个对象创建独立的方法,这在Ruby中是一个非常有用的功能。 11. 过程对象 Ruby中的过程对象是类似于其他语言中函数或过程的对象。 12. 初始化对象 Ruby中的对象初始化是一个重要的过程,它...
《笨方法学Ruby》是针对初学者的一本中文教程,旨在通过实践性的学习方式帮助读者掌握Ruby编程语言。这本书的特点是强调动手实践,通过一系列的练习来深化对Ruby语法和编程概念的理解。以下是对该书内容及压缩包文件...
Ruby支持单例方法,即针对特定实例定义的方法,只对该实例有效。 - **代码示例**: ```ruby class MyClass def the_method "general method" end end mc = MyClass.new def mc.the_method "special for ...
Ruby函数与方法 Ruby面向对象编程 Ruby模块与包 Ruby错误处理 Ruby文件与I/O操作 Ruby正则表达式 Ruby网络编程 Ruby数据库交互 Ruby测试框架 RubyWeb框架Rails入门 Ruby高级特性 Ruby性能优化与最佳实践
ruby2ruby 提供一些用来根据 RubyParser 兼容的 Sexps 轻松生成纯 Ruby 代码的方法。可在 Ruby 中轻松实现动态语言处理。 标签:ruby2ruby
Ruby是一种动态、开源的编程语言,以其简洁、优雅的语法和强大的元编程能力著称。在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build...
主要包括Ruby概述、使用模板方法变换算法、使用策略替换算法、通过观察器保持协调、通过迭代器遍历集合、使用命令模式完成任务、使用适配器填补空隙、使用装饰器改善对象、单例、使用工厂模式挑选正确的类、通过生成...