#定义模块,虽然模块看起来很象一个类,但是它永远不能有一个实例?
#怎么听起来象纯虚类?
module Black
#属性
Name='blackant'
#方法
def Black.Hello(str)
'hello '+str
end
end
module SumModule
def sum
inject{|result,n| result+=n}
end
end
module InstaneModule
State={}
def State=(value)
State[object_id]=value
end
def State
State[object_id]
end
end
module NotInstanceModule
def State=(value)
@State=value
end
def State
@State
end
end
#使用模块
#外部引用 load每次调用都会引入文件,但require只会调用一次
#连续两次load会给一个警告,但连续两次require不会
#load 'module.rb'
require 'module.rb'
#require文件名, .rb也可以省略#还是叫它module吧
#纯虚类是不能这样使用的
puts Black.Hello(Black::Name)
#include符合合成/聚合复用原则
class IncludeBlack
include Black
end
puts Black.Hello(Black::Name)
#自定义可枚举类
class SupportEnumerable
def initialize(str)
@str=str
end
#包含Enumerable模块
include Enumerable
#实现each
def each
@str.scan(/[aeiou]/) do |chr|
yield chr
end
end
end
#扩充SupportEnumerable,再它再支持求和
class SupportEnumerable
include SumModule
end
se=SupportEnumerable.new("I Love Ruby")
puts se.inject{|result,i| result+=i} #oeu
puts se.sum#oeu
#如果模块中含有变量,可能造成多个实例共用一个实例.解决方法是为每个实体单独命名它们的变量
class SupportInstaneModule
include InstaneModule
end
sim1=SupportInstaneModule.new
sim1.State=true
sim2=SupportInstaneModule.new
sim2.State=false
puts sim1.State,sim2.State #true,false
#可是书上虽然这样说,我试了一下,好象也是每个类单独使用了自己的变量实例
#我的版本是185.21的
class SupportNotInstanceModule
include NotInstanceModule
end
snim1=SupportNotInstanceModule.new
snim2=SupportNotInstanceModule.new
snim1.State=true
snim2.State=false
puts snim1.State,snim2.State #true,false
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/blackant2/archive/2006/12/04/1429135.aspx
分享到:
相关推荐
标题中的"ruby笔记1ruby笔记1ruby笔记1"暗示了这是一份关于Ruby编程语言的学习笔记,可能包含了作者在学习过程中的重点、难点以及心得体验。描述中的内容重复了标题,进一步强调了这是关于Ruby的深入学习记录。标签...
Ruby是一种面向对象的脚本语言,它以其简洁、优雅的语法和强大的功能而闻名。...通过安装Ruby和DevKit,你可以轻松地编写、编译和运行Ruby代码,同时结合学习笔记,可以深入理解Ruby语言及其生态系统。
在Ruby中,方法是定义在类或模块中的代码块,用于执行特定任务。方法可以通过类名或对象实例来调用。 示例代码: ```ruby # 定义一个方法 def greet(name) puts "Hello, #{name}!" end # 调用方法 greet("Alice...
GDAL的独特之处在于它的跨平台性,可以在C/C++、Python、Ruby、VB、Java和C#等多种编程语言下使用,且功能一致。对于Python用户,GDAL与Numeric库的集成使得数据处理变得更加便捷,可以利用矩阵运算轻松处理图像数据...
从给定的文件信息中,我们可以提炼出一系列关于Ruby编程语言的重要知识点,涵盖基础语法、变量类型、...以上总结了Ruby的一些基础知识点,这些内容对于初学者掌握Ruby编程语言至关重要,同时也是进一步深入学习的基石。
2. **最佳实践**:参会者笔记可能包含了他们在项目中积累的最佳编程实践,例如错误处理、模块化设计、测试驱动开发(TDD)等,这些经验对于提升代码质量非常有价值。 3. **Gem 和框架**:Ruby 社区有着丰富的第三方库...
这份"Ruby学习资料(含参考手册和Programming Ruby)-中文.rar"压缩包包含了一系列的资源,帮助初学者和进阶者深入理解Ruby语言。 首先,"ruby中文文档(含参考手册和Programming Ruby).chm"是一个综合性的中文参考...
学习笔记 ruby --version > ruby 2.6.1p33 (2019-01-30 revision 66950) [x64-mingw32] 在入门学习 Ruby 的过程中,看了不少网上的教程,经常遇到的是明明代码和教程上完全一模一样,但是运行后各种报错。 本文主要...
本资源“学习 Ruby 的笔记以及 Demo.zip”显然包含了关于Ruby编程的学习资料和一些实际示例代码,旨在帮助初学者理解并掌握Ruby的基础及进阶特性。 首先,让我们深入了解一下Ruby的核心特性: 1. 面向对象:Ruby是...
以上是Ruby自学笔记中提及的关键知识点的详细解读,如果要学好Ruby语言,深入理解这些基础知识是非常必要的。Ruby语言的这些特性与规则构成了其独特的编程范式,使得它在动态语言领域中占有一席之地。
### Ruby on Rails 环境搭建与 Passenger+Nginx 配置详解 #### 一、Ruby on Rails 开发环境搭建 在进行 Ruby on Rails 的开发之前,首先需要完成一系列的基础软件安装工作,包括但不限于 Ruby 语言环境、Rails ...
"ruby笔记2ruby笔记2ruby笔记2"可能是指一系列关于Ruby学习的笔记,这些笔记可能涵盖了Ruby的基础概念、核心特性以及进阶话题。在Ruby的学习过程中,理解和掌握以下几个关键知识点至关重要: 1. **面向对象编程...
10. **Gem生态系统(Gem Ecosystem)**:Ruby的生态中,Gem是软件包管理器,它允许开发者轻松地安装、管理和分享库和其他依赖。了解如何使用`gem`命令和编写Gemfile是Ruby开发的必备技能。 11. **Rails框架(Ruby ...
在“ruby-on-the-way”资料包中,可能包含了各种教程、代码示例、练习项目和笔记,这些都是学习过程中不可或缺的部分。Git的提及意味着这份资料可能还包括了如何使用版本控制系统来管理代码的知识,这对于团队协作和...
在Ruby笔记3中,我们将会深入探讨这个强大的语言的各个方面,包括基础语法、类与对象、模块、方法、控制结构、异常处理、文件操作以及一些高级特性。 首先,让我们从基础语法开始。Ruby中的变量分为四种类型:局部...
Ruby是一种面向对象的脚本语言,其语法简洁且灵活。在Ruby中,标识名的命名规则至关重要,因为它们区分了不同类型的变量和方法。...学习并熟练掌握这些基础概念,将有助于深入理解和运用Ruby语言。
### GDAL-Python库学习笔记 #### 一、GDAL 库简介 ##### 1.1 引言 GDAL(Geospatial Data Abstraction Library)是一个强大的库,旨在为栅格地理空间数据提供翻译与处理功能。对于从事地理信息系统(GIS)或遥感...
这篇学习笔记主要探讨了JS.Class如何利用JS.Module实现继承、方法查找以及模块的使用。 JS.Module在JS.Class中扮演着核心角色,它是一个可以存储方法的对象,用于组织和复用代码。你可以将一个JS.Module看作是一个...
Ruby是一种面向对象的、动态类型的...通过这些示例,我们可以深入理解Ruby语言的特性和常用操作,为今后的学习和开发打下坚实的基础。无论是初学者还是经验丰富的开发者,Ruby都能提供一个富有创新和乐趣的编程环境。