`

Ruby extend self

    博客分类:
  • Ruby
阅读更多
我们想让实例方法同时为类方法,那么可以使用extend self,这个对于普通的类
可能没有什么用。但是对于module来说还是很有用的,因为module不可以实例化,
module的实例方法通过自身就无法单元测试,所以通过extend self可以作为类方法暴露
来测试了:
module M
  extend self
  def greeting
    puts "hi"
  end
end

如果没有extend self,我们就无法使用M.greeting,
现在我们可以调用M.greeting了。
BTW:
module_function可以把module一个实例方法变成私有的,并复制一份放到
其metaclass中。
分享到:
评论

相关推荐

    Ruby 中的 module_function 和 extend self异同

    在Ruby编程语言中,`module_function`和`extend self`都是与模块(module)相关的特性,它们用于控制方法的可见性和行为。理解这两者的异同对于编写清晰、可维护的代码至关重要。 首先,我们来看`module_function`...

    Ruby on Rails中的include和extend的常见用法

    总的来说,`include`和`extend`是Ruby on Rails中模块化编程的重要工具,它们分别用于添加实例方法和类方法,而`self.included`回调可以让我们在`include`模块时自定义类的行为,比如同时添加实例方法和类方法。...

    模块的力量:Ruby中include与extend的深度解析

    ### 模块的力量:Ruby中include与extend的深度解析 #### Ruby语言简介 Ruby是一种高级、面向对象的编程语言,自1995年由日本开发者松本行弘(Yukihiro "Matz" Matsumoto)创建以来,一直受到广泛的欢迎。它的设计...

    Ruby中require、load、include、extend的区别介绍

    ### Ruby中require、load、include、extend的区别介绍 在Ruby编程语言中,为了实现代码的重用和组织,开发者经常需要引入外部文件或模块。在这一过程中,`require`、`load`、`include`、`extend`这几个关键字发挥了...

    Ruby元编程 源代码 Metaprogramming Ruby source code

    `class << self`语法常用于在类的上下文中定义方法。 3. **消息发送**:`send`或`__send__`方法可以动态地调用其他方法,这使得你可以根据条件或数据来决定调用哪个方法。 4. **反射API**:Ruby提供了一系列的反射...

    Ruby-Configatron一个超级酷简单功能丰富的Ruby应用程序的配置系统

    Configatron.extend self def api_credentials "#{api_key}:#{api_secret}" end ``` 现在,你可以直接调用`Configatron.api_credentials`获取组合的凭据。 ### 结论 Configatron作为Ruby中的一个强大配置管理...

    ruby trap 初学者使用

    了解如何创建自定义类,继承和模块混入(include/extend)是基础。 - 类变量和实例变量的区别,以及`class << self`语法来改变当前类的上下文也是重要的知识点。 5. **异常处理**: - `begin...rescue...end`结构...

    ruby中文教程(源代码)

    - 方法定义:Ruby允许在类定义内部以及类外部定义方法,还可以使用`def self.method_name`定义类方法。 3. **Ruby on Rails** - Rails是基于Ruby的Web开发框架,遵循MVC(模型-视图-控制器)架构模式。 - ...

    ruby语法自整理

    - 模块(Module)用于封装功能,可以使用`include`将模块的方法添加到类的实例方法中,使用`extend`将模块的方法添加到类本身(类方法)。 - `load`用于加载文件,如果已经加载过,不会再次加载。 8. `case`语句 ...

    ruby-main.zip

    8. **模块化编程**:Ruby的模块系统支持命名空间和混合(mixin),通过`include`或`extend`关键字,模块可以被纳入类中,实现代码的复用和组织。 9. **闭包**:Ruby中的Blocks、Procs和Lambdas都具有闭包特性,能...

    Ruby语言教程和经典案例

    def self.included(base) base.extend(ClassMethods) end module ClassMethods def hello puts "Hello from Utility Module" end end end class MyClass include Utility end MyClass.hello # 输出 ...

    Ruby中文教程。。。

    3. 类方法与实例方法:`self`关键字常用于类方法,如`def self.class_method`,而实例方法定义则用`def method`。 4. 模块(Module):Ruby的模块用于组织代码,可以包含常量、方法和类。模块可以通过`include`或`...

    Ruby语言中文教程

    - `class << self`用于自定义类的方法,`define_method`用于在运行时定义方法。 9. **Gem和Ruby生态系统** - Ruby的生态中,Gem是包管理器,用于安装和管理各种库和工具。 - Rails是Ruby最著名的Web开发框架,...

    Ruby语言入门教程&代码示例.zip

    模块也可以通过`include`或`extend`关键字来实现代码复用。例如: ```ruby module MathUtils PI = 3.14159 def self.area_circle(radius) PI * radius**2 end end puts MathUtils.area_circle(5) # 输出:78....

    Understanding Ruby's Object Model

    类方法是直接关联到类对象的方法,通常用`self`或类名调用,如`MyClass.class_method`。对象方法则作用于类的实例,如`my_object.object_method`。 5. **模块(Module)** 模块在Ruby中起到命名空间的作用,也...

    Ruby Best Practices

    - 掌握并使用Ruby的 Mixins,如`include`和`extend`,来实现代码复用。 6. **测试驱动开发(TDD)** - 遵循TDD的原则,先写测试,再写实现代码,确保代码的健壮性。 - 使用Rspec等测试框架编写单元测试和集成测试...

    Ruby面向对象编程中类的方法与类的扩展

    ### Ruby面向对象编程中类的方法与类的扩展 在Ruby这门动态的、面向对象的脚本语言中,类和方法扮演着极其重要的角色。本文将深入探讨Ruby中类的方法以及类的扩展,并通过示例代码帮助理解这些概念。 #### 类方法 ...

    array_extend:Gem array_extend

    弃用说明 此宝石不再维护。 数组扩展 扩展 ruby​​ 数组。 没有覆盖。 支持 验证 Ruby 1.9.3 和 Ruby ree-1.8.7 安装 将此行添加到应用程序的 Gemfile 中: gem 'array_extend' ... self [ index ( val ) + 1 ]

Global site tag (gtag.js) - Google Analytics