Ruby => 模块

1. 提供命名空间(namespace)
命名空间(namespace)是为了让方法,常数,类名称不互相冲突而设计的机制。

2. 以模块形式提供的方法必须使用"模块名.方法名"的方式调用。以这种形式调用的方法又称为模块函数。

3. 在类的定义内使用include, 将模块所定义的方法与常数纳入类定义里。

4. 定义模块

module 模块名
模块定义
end


5. 例子:

# -*- coding: utf-8 -*-

=begin
描述了模块的使用方式
=end

module HelloModule # module 语句

Version = "1.0" # 定义常数
def hello(name) # 定义方法
print "Hello, ", name, ".\n"
end
module_function :hello # 将hello以模块函数形式公开

end

p HelloModule::Version # => "1.0"

p HelloModule::hello("Alice") # => Hello, Alice.
# nil

p HelloModule.hello("Alice") # 同上

include HelloModule # 读入
p Version
hello("Jack")


6. 模块内部也可以定义方法,只是方法在定义之后,只能在模块内部调用。要将方法对模块外部公开,必须使用module_function。

7.

# -*- coding: utf-8 -*-

=begin
在模块函数内引用self(接受者), 可以取得改模块本身。这样就可以使用模块函数去改写模块本身的状态了,
但一般来说模块函数通常不会去使用self。
=end

module FooModule
def foo
p self
end
module_function :foo
end

FooModule.foo # => FooModule
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值