`
gift5168xf
  • 浏览: 28999 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

模块的included()

    博客分类:
  • ROR
阅读更多

    模块的included方法会在其他的类或模块把这个模块混入他们自己里面时被调用,调用时传入的参数为混入模块的模块或类,如下代码

module A
  def A.included(mod)
    puts "#{self} is included in #{mod}"
  end
end

module B
  include A
end


    当B混入A时,此时A的included方法会被调用,通常我们见到的为类设置他的实例方法和类方法的代码如下

module A
  def A.included(mod)  
    def mod.method
      puts "this is the class method"  
    end  
  end  
  def method  
    puts "this is the instance method"  
  end  
end

class B
  include A
end

b=B.new
b.method
B.method


输出结果为:
this is the instance method
this is the class method
当B混入A时,A.included方法被调用,参数为B,该方法中设置了B的method方法,而随着B混入A,A中的实例方法method也作为了B中的实例方法。从而实现了为B同时设置实例方法和类方法
分享到:
评论

相关推荐

    RTD PC/104 有线网络模块板CM17205HR Hardware Manual.pdf

    4. 该模块板带有的RJ45 100Base-T适配器(adapters included with module),说明在模块板上有RJ45接口,用于连接标准的双绞线网络,而且这些适配器已经包含在模块中。 5. 引脚描述中有9针的公头接口(9pin "D" ...

    UG_总布置模块.pdf

    It included: Vehicle Packaging, H-Point Design Tool, 2D Manikin, Seat Lines, Seat Belt Anchorage Hand Reach, Eyellipse, Instrument Panel Visibility, Windshield Vision Zones, Direct Field of View, A ...

    JavaScript模块化工具rollup.js.zip

    rollup.js 是下一代的 JavaScript 模块化工具,使用 ES2015 模块编写你的应用或者库,可以高效的绑定他们成为单个文件,在浏览器或者 Node.js 中使用,甚至是一些高级特性的绑定,比如 bindings 和 cycles。...

    An FTP application with complete VB source code included.

    标题中的“An FTP application with complete VB source code included”指出,这是一个基于Visual Basic(VB)的FTP应用程序,且包含了完整的源代码。这意味着用户不仅可以使用这个应用进行文件传输,还能深入研究...

    完整的glog模块,可点击下载安装

    当我们遇到"fatal error: glog/logging.h: No such file or directory"这样的错误时,意味着系统中缺少了glog库,因此需要下载并安装`glog`模块来解决这个问题。 首先,我们从提供的链接或资源下载名为"google-glog...

    The samples included in this project use the few API

    1. **Module1.bas**:这是Visual Basic的一个模块文件,其中包含了VB代码逻辑。通常,模块文件会包含函数、子程序和变量声明,用于实现项目中的各种功能。 2. **APISamples.exe**:这是一个可执行文件,表明项目...

    morton BLDC__and_PCB_Included.rar

    标题"Morton BLDC__and_PCB_Included.rar"暗示了这个压缩包可能包含了关于Morton品牌无刷直流电动机(BLDC)以及与其相关的电路板(PCB)的设计、规格或使用信息。BLDC电机是一种现代电机技术,常用于需要高效率、...

    Rubik’s Cube game with VB source code included.

    标题 "Rubik’s Cube game with VB source code included" 提供了一个关键信息,即这是一个使用Visual Basic(VB)编程语言开发的魔方游戏项目。在这个项目中,开发者已经包含了完整的源代码,这对于学习VB编程,...

    disc, 可视化browserify项目捆绑包的模块树并跟踪膨胀.zip

    disc, 可视化browserify项目捆绑包的模块树并跟踪膨胀 光盘 Disc是分析 browserify 项目包的MODULE 树的工具。 它特别适用于捕捉大型和/或者重复的模块,这可以能会...在github页面的演示included是在自己的browseri

    batteries-included:包含电池的项目

    用单一的文档来源将这些库组织成模块的层次结构; 和为原本独立的库提供一致的API。建筑电池要求您将需要以下库: > = 3.12.1 > = 1.5.3 GNU make 来构建和运行测试(可选) > = 2.0.1以构建和运行测试(可选) 来...

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

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

    jcss框架0.1(开发者版)

    jcss.included.inc.js 为一个叫included的引用 (inc)模块 jcss.css.ext.js 为一个叫css的拓展(ext)模块 注: 目前已有模块命名如下(其实刚才也说了) min ---------------- 最小核心 -------------整个框架的...

    java模块化系统 epub(英文版)

    For most people, me included, these concepts are new, so this book teaches them from the ground up. It goes all the way from the motivation and basics to advanced features. More than that, it also ...

    This is an example on how to use the Progress Bar included w

    4. `prgbar.vbp`:这是Visual Basic项目文件,包含了项目的整体信息,如引用的库、工程组成员、表单和模块列表等。通过这个文件,你可以知道哪些文件属于项目,并且可以打开和运行整个项目。 5. `prgbar.vbw`:这是...

    人教高二英语模块unitunit语法复习PPT教案.pptx

    该文档虽然标题为“人教高二英语模块unitunit语法复习PPT教案”,但实际上内容涉及的是英语语法中的形容词比较级形式-ing和-ed的用法,以及动词后接过去分词作宾语补足语的规则。以下是相关知识点的详细说明: 1. *...

    江苏高中英语模块一第三单元知识点总结.pdf

    在江苏高中英语模块一第三单元的学习中,涵盖了多个重要的知识点,包括动词短语、形容词用法以及与健康、体型、价值和失败相关的词汇。下面是对这些知识点的详细解析: 1. **动词短语**: - `work out` 有两个意思...

    EhLib.VCL 10.0 Build 10.0.024 source included version (Professional Edition)

    ZipProviders 目录可能包含了用于处理 ZIP 压缩文件的组件或模块,使得应用程序能够方便地进行文件压缩和解压操作,这对于数据备份、传输或者文件管理功能来说非常实用。 关于历史变更的记录,可以从 history-eng....

    yard-activesupport-concern:使用 ActiveSupport 处理模块的 YARD 插件

    这是此类模块的示例: module M extend ActiveSupport :: Concern included do # @!method disabled # @!scope class # @return [Collection] Return a scope to get all disabled records scope :disabled , -> { ...

    Android模块里面增加JNI的方法,调用c代码

    本文将详细介绍如何在Android模块中添加JNI支持,并演示如何通过JNI调用C代码来实现对文件中特定二进制位的设置。 首先,我们需要创建一个本地方法(native method)在Java类中。例如,可以创建一个名为`...

    webpack-analyze-duplication-plugin:检测Webpack构建中的重复模块

    : "/node_modules/vue/dist/vue.esm.js" ,// Size of module"size" : "326.4 kB" ,// Size savings if de-duped"potential-size-savings" : "979.2 kB" ,// Chunks the module is duplicated in"included-...

Global site tag (gtag.js) - Google Analytics