#定义模块,虽然模块看起来很象一个类,但是它永远不能有一个实例?
#怎么听起来象纯虚类?
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笔记1ruby笔记1ruby笔记1ruby笔记1
0积分下载,不允许系统调分-20211115 ruby官方安装包
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
ruby1.9.2_1.9.2-p290-1_amd64.deb
ruby-oci8-2.1.5-x86-mingw32.gem,ruby连接oracle数据库gem包
ruby-debug-ide-0.3.1.gem
这个暑假回家没事干闲...恩,废话就少提,下面我学习Ruby的各个部分。其中Ruby风格这一部分是开放的,因为我暂时还没有形成自己的风格。我用xmind来记笔记,因此我只是把笔记搬到博客上,看看下面的图。好有爱啊!!!
Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。...该版本为ruby-1.8.7-p302
ice最简单实现 ruby调用ice接口 - Ruby - language - ITeye论坛
学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及...
ruby-1.9.2-p290.tar.gz,ruby,redmin,安装,
ruby-1.8.7-p358-doc-chm.7z 3.65 MB 1,399 Other Other ruby-1.8.7-p358-i386-mingw32.7z 5.12 MB 1,503 i386 Other rubyinstaller-1.8.7-p358.exe 11.69 MB 13,534 i386 .exe (Windows executable)
mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe
ruby-irb-1.8.7.352-13.el6.x86_64.rpm ruby-irb-1.8.7.352-13.el6.x86_64.rpm
ruby基础笔记,自学笔记,ruby基础语法非常全面ruby基础笔记,自学笔记,ruby基础语法非常全面
ruby1-导出-1
ruby-oci8-1.0.3-x86-mswin32.gem
Ruby学习笔记 01 类的属性与方法 02 访问控制 03 Container(Array/Hash) 04 Iterator 05 简单数据类型 06 范围 07 方法 08 条件控制 09 异常处理
ruby官网文件,但官网的安装包下载速度过于缓慢, 此安装包的版本是2.6.5-1-x64 如果您不知道要安装哪个版本,并且开始使用Ruby,建议您使用Ruby + Devkit 2.6.X(x64)安装程序。它提供了最多数量的兼容gem,并与...