`
liano
  • 浏览: 25955 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

从 include 看ruby的实现方式

阅读更多
class Dog
  def include_mod # not workable
    include Mod
  end
 
  def self.include_mod #workable
    include Mod
  end
end

module Mod
  def shat
    puts "shat"
  end
end

dog = Dog.new
dog.class.include_mod
puts Dog.instance_method :shat
dog.include_mod

#'include' is a method belonging to Module
#Class inherit Module, so Class can include
#And 'include' is one of Module's instance methods, so the decleared module Mod has a method include.
#Module is Class, and Class is a Module. Both of them has two set of methods: instance_methods and his owner methods.
instance method 'include' in Class is passed into Dog as regular method when declaration.
but when declear "dog = Dog.new", 'include' is not a instance method any more in Dog. So dog can't include.
分享到:
评论
1 楼 Omnibus 2009-02-27  
include予class instance methods
extend予class class methods

相关推荐

    Ruby从入门到精通pdf

    Ruby是一种强大的、面向对象的编程语言,以其简洁的语法和注重开发者生产力的设计理念而闻名。...教程中可能涵盖了以上各点的详细解释,以及实战示例和习题,帮助你逐步掌握Ruby的精髓,实现从初学者到精通者的转变。

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

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

    Ruby 编程语言的书籍

    1. **模块与混合**:介绍模块的作用及其实现方式,重点讲述如何使用`include`关键字将模块混入到类中,从而实现代码重用。 2. **元编程**:深入分析Ruby强大的元编程能力,包括动态方法定义、反射、符号处理等内容...

    Ruby-Ruby中的GoF设计模式实现

    Ruby中的`Singleton`模块可以轻松实现这一模式,通过`include Singleton`引入模块后,每个类实例只能被创建一次。 3. **抽象工厂模式**:提供一个接口,用于创建相关或依赖对象的家族,无需指定具体类。在Ruby中,...

    Ruby编程Ruby Programming

    这本面向初学者和高级读者的指南旨在全面介绍Ruby编程语言的基础及其高级特性,因此我们将从多个角度来解析这些内容。 ### 一、Ruby编程语言简介 #### 1.1 Ruby语言的历史与发展 Ruby是一种动态、面向对象的脚本...

    Ruby语言入门教程

    模块可以被混入(include)到类中,实现代码的复用。这对于创建类之间的关系,尤其是横向关系非常有用。 Ruby的块(Block)和 Proc 对象是其独特功能之一。块是一段可以在函数或方法中传递的代码,通常由`do..end`...

    RUBY 教程.doc

    RUBY支持多重编程范式,如函数式编程、命令式编程等,这使得开发者可以根据实际需求灵活选择编程方式。 #### 二、RUBY环境搭建与配置 1. **安装RUBY:** 可以通过官方网站下载最新的RUBY版本进行安装,对于Windows...

    Ruby元编程 源代码 Metaprogramming Ruby source code

    书中的例子可能涵盖从简单的动态方法生成到复杂的类和模块结构改造,甚至包括自定义的DSL实现。每个例子都是精心设计的,旨在逐步揭示Ruby元编程的深度和广度。 总的来说,Ruby元编程是一个强大的工具,但同时也...

    Programming-Ruby-1.9源代码

    这些源代码是学习和探索Ruby语言的重要资源,涵盖了从基础语法到高级特性的各种应用场景。 1. **Ruby语言基础** - 变量:Ruby支持局部变量、实例变量、类变量和全局变量,源代码中会展示它们的用法和作用域。 - ...

    ruby api html

    类定义了对象的行为,模块则用于组织代码和实现多继承(通过 `include` 关键字)。方法是类或模块中定义的可调用代码块,负责执行特定任务。Ruby 提供了一套丰富的内建类和模块,如 `String`、`Array`、`Hash` 等,...

    Ruby 方法、类

    在Ruby中,方法和类是构建程序的基本元素,它们是实现代码重用和组织的关键概念。 ### 方法(Methods) 方法在Ruby中是可重复使用的代码块,它们接受参数,执行特定任务,并可能返回值。方法定义使用`def`关键字...

    ruby-2.6.3源码压缩包

    3. **改进的模块混合(Mixins)行为**:Ruby允许类之间通过`include`关键字混合模块,2.6版本对此进行了优化,解决了模块嵌套混合可能导致的冲突问题。 4. **改进的并发模型**:Ruby 2.6加强了线程和并发处理,如更...

    ruby中文文档中心资料

    Ruby支持单继承,但通过模块,可以实现一种形式的多继承,即混入。模块可以包含方法和常量,可以通过`include`关键字将模块的方法引入到类中。 Ruby的标准库非常丰富,提供了许多内置的模块和类,如File用于文件...

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

    在Ruby编程语言中,为了实现代码的重用和组织,开发者经常需要引入外部文件或模块。在这一过程中,`require`、`load`、`include`、`extend`这几个关键字发挥了重要作用。它们虽然功能相似,但在使用场景、作用以及...

    Ruby读取INI文件

    以下是一个基本的实现方式: ```ruby class IniReader def initialize(file_path) @data = {} File.readlines(file_path).each do |line| if line.start_with? '[' section = line.chomp[1..-2] # 剔除方括号...

    Ruby-wisper一个微型库为Ruby对象提供发布订阅功能

    Ruby Wisper库是一个轻量...通过Wisper,Ruby开发者可以轻松地在对象间实现松散耦合的事件通信,这对于构建模块化、可维护的应用程序非常有帮助。无论是在大型项目中还是小型脚本里,Wisper都是一个强大而实用的工具。

    Ruby-FastJSONAPI一个用于Ruby对象的快速JSONAPI的序列化器

    它旨在帮助开发者以简洁、高效的方式将Ruby对象转换为符合JSON:API规范的JSON格式,极大地提高了开发效率和应用程序的性能。 JSON:API是一个广泛接受的标准,它定义了如何在客户端和服务器之间交换数据,包括资源的...

    Ruby In a Nutshell

    《Ruby in a Nutshell》是一本面向初学者和有经验的程序员的快速参考指南,它深入浅出地介绍了Ruby编程语言的核心概念和语法。Ruby是一种动态、面向对象的脚本语言,以其简洁、优雅的代码风格和强大的元编程能力而...

    Ruby-Money一个Ruby库来处理货币和货币转换

    在Ruby社区中,它被视为一个非常实用且功能丰富的库,能够帮助开发者以一种更规范和安全的方式处理货币。 Money库的核心特性包括: 1. **货币对象**:Money库创建了一个名为`Money`的类,用于表示特定金额和货币...

Global site tag (gtag.js) - Google Analytics