码迷,mamicode.com
首页 > 其他好文 > 详细

ruby简单的基础 6

时间:2014-06-26 14:19:28      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:ruby

模块

模块同类一样,也有 class method 和 instance method。
module 没有new不能生成实例对象
其中 class method 在模块中称为模块方法,是可以直接调用的。

module Foo
  def self.hello
    puts ‘hello world!‘
  end


  def Foo.dear #module全局作用域内的self还是没有变,就是Module;
  	puts ‘dear..‘
  end


  NUM = 100


end




Foo.hello   #=>  ‘hello world!‘ 调用模块方法 模块名字.方法名字
Foo.dear #=>  ‘dear..‘ 调用模块方法 模块名字.方法名字
Foo::NUM #=> 100 引用一个常数,使用模块名和两个冒号。


而对于模块里面的 instance method 实例方法,这种方法不能直接调用,需要mixin到一个类中。
主要有两种形式:
一种是include,方法会被添加到实例方法中。
一种是extend,方法会被添加到类方法中。

module M
	def self.m_fun
		puts ‘m fun‘
	end


	def instance_fun
		puts ‘instance fun‘
	end


	NUM = 100
end

M.m_fun
M::m_fun
puts M::NUM

puts ‘-----------------‘

class A
	include M
end

#A.m_fun
#A.instance_fun
#A.new.m_fun
A.new.instance_fun

puts ‘-----------------‘
class B
	extend M
end

#B.m_fun
B.instance_fun
#B.new.m_fun
#B.new.instance_fun


一些总结

require, load,include都是Kernel模块中的方法,他们的区别如下:


require,load用于包含文件,include则用于包含的模块。


require加载一次,load可加载多次。


require加载Ruby代码文件时可以不加后缀名,load加载代码文件时必须加后缀名。


require一般情况下用于加载库文件,而load用于加载配置文件。

ruby简单的基础 6,布布扣,bubuko.com

ruby简单的基础 6

标签:ruby

原文地址:http://blog.csdn.net/iitvip/article/details/34448117

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!