`

关于extend和include

    博客分类:
  • Ruby
阅读更多
ruby 代码
  1. module Action   
  2.   def read   
  3.   end  
  4.   def write   
  5.   end  
  6. end  
首先定义了一个module,采用include和extend都可以将此module引入,module中的方法将作为实例方法。
java 代码
  1. class A   
  2.   include Action   
  3. end   
  4.   
  5. class B   
  6. end   
  7. b = B.new  
  8. b.extend Action  

此时调用A.instance_methods或者b.methods都可以看到方法确实已经被混入,但是include和extend的区别在哪儿?

extend的call必须是一个object,它mixing入的方法只在此object中有效,同一个类的其他实例中,是没有mixing的;include不同,它是一个class方法,caller是一个class,它对所有实例都是有效的,看代码:

ruby 代码
  1. a1 = A.new  
  2. a2 = A.new  
  3. a1.read #right   
  4. a2.read #right   
  5.   
  6. b1 = B.new  
  7. b1.extend Action   
  8. b2 = B.new  
  9. b1.read #right   
  10. b2.read #wrong!没有定义read这个方法  
分享到:
评论

相关推荐

    解析UML用例图中include与extend的区别

    在 UML 用例图中,有两种重要的关系:include 和 extend。这两种关系都是用来描述用例之间的关系的,但是它们之间有着本质的区别。 include 关系是指用例中的包含关系,通常发生在多个用例中,有可以提取出来的公共...

    UML用例图之泛化(generalization)、扩展(extend)和包含(include)关系

    用例的关系有泛化(generalization)、扩展(extend)和包含(include)。其中include和extend最易混淆。下面我们结合实例彻底理清三者的关系。基本概念用例图(UseCaseDiagram):用例图显示谁是相关的用户,用户希望系统...

    【UML】用例图+活动图+include与extend的区别

    在这个主题中,我们将深入探讨三个核心概念:用例图、活动图以及在UML中的`include`和`extend`关系。** **1. 用例图(Use Case Diagram)** 用例图是UML中最基础的图之一,用于描绘系统与用户或外部实体之间的交互...

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

    在Ruby on Rails中,`include`和`extend`是用来引入模块到类或对象中的关键语法,它们可以帮助我们更好地组织和重用代码。这两个关键字的主要区别在于它们如何将模块中的方法添加到目标类或对象。 首先,`include`...

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

    ### 模块的力量:Ruby中include与extend的深度解析...总之,通过理解和掌握`include`和`extend`这两个关键字,开发者可以在Ruby中更好地利用模块的力量来实现代码的复用和扩展,从而构建出更加高效和可维护的应用程序。

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

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

    jqury.js+elementUI+vue.js.rar

    将jQuery.js、Element UI和Vue.js结合使用,可以在享受Vue.js的响应式数据绑定和组件化优势的同时,利用jQuery的DOM操作能力和成熟的生态系统。例如,jQuery可以用于快速实现复杂的DOM操作或者处理一些低级别的...

    使用jquery动态加载js文件的方法

    $.extend({  includePath: ”,  include: function(file) {  var files = typeof file == “string” ? [file]:file;  for (var i = 0; i < files.length; i++) {  var name = files[i].replace(/^\s|\s$/g,...

    解释UML用例图中包含,扩展、泛化的区别.doc

    包含关系(Include) 包含关系是一种基本关系,它允许将一个用例拆分为多个小的用例,以便重用和简化模型维护。包含关系的基本思想是将公共的行为或动作抽象出来,形成一个独立的用例,然后让多个基用例复用这个...

    Ruby 中的 module_function 和 extend self异同

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

    UML中用例图之间的关系 .docx

    本文档介绍了 UML 中用例图之间的关系,包括 include、extend、generalization 三种关系的概念和应用。 一、Include 关系 Include 关系是指基用例与包含用例之间的关系。它定义了基用例可以看到包含用例,并依赖于...

    中南大学软件学院软件体系结构实验1UML实验-参考答案.doc

    这些用例之间的关系可以用include、extend 和generalize 等关系来描述。 二、Cafeteria Ordering System(COS)用例图 Cafeteria Ordering System(COS)是一个为企业员工提供的订餐系统。员工可以查看菜单和今日...

    系分画图1

    要注意include和extend的区别:include表示必需的行为,而extend表示可选的行为,通常用虚线箭头连接。 5. **工作流和顺序**:理解完成目标的工作流程,有助于划分用例。例如,预订酒店可能包括四个步骤:搜索、...

    EA建模入门.docx

    用例间关系包括 Include 和 Extend。Include 表示一个用例包含另一个用例,即要完成包含用例就一定要执行被包含用例。Extend 表示一个用例扩展到另一个用例,这里有一点需要注意:在执行一个被扩展用例时,不一定...

    软件工程考试题(含答案).pdf

    中辨识出一些与软件工程相关的概念和术语,如“RAD”、“DFD(DataFlowDiagram)”、“PDL(程序设计语言)”、“ER图”、“UML(统一建模语言)”、“类、对象、封装、多态”、“<<include>>、<<extend>>”等。...

    extend:定制点可扩展任何类的功能

    用法示例: #include "extend.hpp"namespace ns { xtd_function diff; // Define customisation point ns::diff}// Default implementationtemplate<class>constexpr auto impl(ns::diff)(T t, U u) { return t - u;...

    postcss-insert:一个postcss插件,可以将一个CSS类的属性插入到另一个CSS类属性中,例如Sass的extend ...效果更好

    使用Sass的Mixins可以更好地工作,您可以在mixin中创建一堆属性,然后只需@include它们就可以了。 但是,您现在有了这多余的东西... mixin本身,对我来说有点脏。 这确实应该是一个已解决的问题,但这不是出于某些...

    uml期末复习题总结选择题填空题 简答题

    1. 用例的extend和include之间的区别: extend关系指的是一个用例可以扩展另一个用例的功能,而include关系指的是一个用例可以包含另一个用例的功能。extend关系用于描述用例之间的扩展关系,而include关系用于描述...

Global site tag (gtag.js) - Google Analytics