`
java-admin
  • 浏览: 1366013 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

ruby的class与module的区别

阅读更多

http://blog.163.com/rettar@126/blog/static/121650342201141711395591/

 

 

1、 模块不能实例化,类不能include

2、如果模块和类不在用一个文件中,如果要使用include,先使用require把文件引入

3、include不是简单的将模块的实例变量和方法拷贝到类中,而是建立一个由类到所包含模块的引用

4、如果有多个include,将依次生成代理类,最后一个include的将是该类的直接超类,依次向上衍生

5、含有include的模块或者类定义,可以访问它所包含的常量,类变量和实例方法。如果一个模块被包含,改模块的常量,类变量,实例方法都被绑定到该类的一个匿名超类中,类的对象会响应发送给模块实例方法的消息

6、模块里可以定义一个initialize方法,当创建包括模块的类的对象时,满足一下条件之一,则模块的该方法将被调用:a、类没有定义他自己的initialize方法,b、类的initialize方法中调用了super

分享到:
评论

相关推荐

    abstract_class:Ruby 中的抽象类

    与模块不同,抽象类可以被继承,并且它们的派生类可以被实例化。 查看或实现以获取其他示例。 安装 gem install abstract_class 要求 Ruby 1.8.7+ 用法 要使类抽象,只需扩展AbstractClass模块即可。 module ...

    Ruby常见面试题.pdf

    1. 什么是Ruby?简要介绍Ruby的特点和主要用途。...10. 在Ruby中如何进行模块(Module)和类(Class)的定义?请说明在Ruby中模块和类的创建方法。 11. 什么是Ruby中的符号(Symbol)?请说明在Ruby中符号的作用

    Ruby self在不同环境的含义

    二、在class或module的定义中: 在class和module的定义中,self代表这个class或这module对象: Ruby代码 class S puts ‘Just started class S’ puts self module M puts ‘Nested module S::

    Ruby 中的 module_function 和 extend self异同

    module 中的method 又可分为 instance method 和 module method, 当一个 module 被 include 进一个 class ,那么 module 中的 method (注:没有被 module_function 标记的 method)就是 class 中的 instance method, ...

    ruby语法基础教程

    ruby语法基础教程,比较全的。 目 录 Ruby语言 1 Grant Ren 1 第一部分 Ruby语言基础 8 第一章 Ruby语言概述 8 §1.1 Ruby的历史 8 §1.2 Ruby名字的由来 8 §1.3 Ruby的特点 8 §1.4 Ruby和Python的比较 9 第二章...

    JS.Class 学习笔记

    JS.Class 个人学习笔记: 在ruby中,一个module就是一个简单的对象——它存储一组方法。在JS.Class中,它正是此JS库的核心。。。。。。

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

    类方法 类方法其实质是生活在该类的单件类中的单件方法。其定义方法有三种,分别是: # 法一 def MyClass.a_class_method; end # 法二 class MyClass def self.anther_class_method;...module MyModule def

    rubric:Ruby 的 D3 可视化

    Module由一个素色和弦表示,该弦在从Class弧到Module弧时变窄。 将鼠标悬停在特定类弧上会显示该特定类的关系。 例如,将BasicObject悬停在Object显示其与其 40 个直接子类及其父类BasicObject 。 将鼠标悬停在...

    rgot:Ruby + GOlang测试= Rgot

    Ruby + Golang测试= Rgot Rgot是从golang测试转换而来的测试包。 用法 测试/sample.rb class Sample def sum ( i , j ) i + j end end 测试/ pass_test.rb module SampleTest class TypeSum < Struct . ...

    ruby-ddp:太简单的数据打印机

    class TestModule def piyo # ... end end dp %w[ 100 101 102 ] dp test : 1000 dp TestModule . method ( :instance_method ) dp TestModule . instance_method ( :piyo ) 运行 ruby​​ 脚本: $ ruby -...

    ruby 局部变量

    局部变量由小写字母或下划线(_)开头.局部变量不像全局和实变量一样在初始化前含nil值. ruby> $foo nil ruby> @foo nil ruby> foo ERR: (eval):1: ...proc{…} loop{…} def…end class…end module…end

    rbs:Ruby的类型签名

    module ChatApp VERSION: String class User attr_reader login: String attr_reader email: String def initialize: (login: String, email: String) -> void end class Bot attr_reader name: String attr_reader...

    Ruby常量查找路径问题深入研究

    Ruby 的常量查找路径问题是一直困扰我的一个问题,在工作中遇到过好几次,一直没有彻底弄清楚到底为什么,最近在读一本书《Ruby 元编程》,对 Ruby 对象模型有了更深入的认识,另外读了一篇 blog《Everything you ...

    简要解读Ruby面向对象编程中的作用域

    Ruby中不具备嵌套作用域(即在内部作用域,可以看到外部作用域的)的特点,它的作用域是截然分开的,一旦进入一个新的作用域,原先的绑定会被替换为一组新的绑定。 程序会在三个地方关闭前一个作用域,同时打开一个新...

    公式:Ruby的表单生成器。 快速,愤怒且与框架无关

    配方师适用于Ruby的与框架无关的表单渲染器。概述Formular以类似于和其他gem的方式呈现HTML表单。 它闪电般快速,与任何ORM或Web框架的耦合为零,并且对呈现的表单对象没有神奇的假设。例子虽然您可以手动实例化表单...

    interface:ruby 中的可实现接口

    界面 - ruby 中的实验接口安装 gem install shuber - interface要求 Ruby 1.9+用法 只需使用您希望其实现对象定义的任何方法创建一个模块module RemoteControl # turns the device on def on end # turns the device...

    uninclude:实施Module#uninclude和Object#unextend

    经过测试的Ruby版本 2.2.3 2.2.0 2.1.4 2.1.0 2.0.0 1.9.3 1.9.2 1.8.7 稀土 见 安装 将此行添加到您的应用程序的Gemfile中: gem 'uninclude' 然后执行: $ bundle 或将其自己安装为: $ gem install ...

    dialers:Ruby的Api包装器

    此外,如果要使用与默认适配器(基于内置ruby库的net_http不同的法拉第适配器,则必须为此安装gem。 例如,要使用您必须将gem "patron"添加到您的Gemfile中。 为简单起见,本自述文件将使用默认的net_http适配器。 ...

    little-boxes:Ruby中的依赖注入框架

    LittleBoxes是一个轻量级库,有助于在Ruby中进行依赖项注入。 它的主要特点是: 提供一个代表您的应用程序配置的依赖关系树。 自动配置您的依赖项。 默认情况下是延迟加载。 有关它的介绍,您可以观看下面的...

Global site tag (gtag.js) - Google Analytics