ruby 中的 module_function 关键字

模块是ruby特有的功能之一。模块和类很像,但和类最大的不同在于模块不能实例化,也不能继承。模块的作用有两个。一个是用于提供命名空间。第二提供Mix-in功能。Mix-in和继承很像,但它不是继承。

模块的常量和类常用调用方法一样。模块名::常量名。模块的方法调用和类的方法调用不同,可以使用模块::方法名,也可以使用模块.方法名。

模块定义的方法默认是不对外部公开的,(模块内没有public private protect关键字),要将方法对模块外部公开,必须使用module_function。

module ModuleTest

    V1="1.8.6"
    def say()
     puts "hello"
    end
module_function :say
end

puts ModuleTest::V1   #1.8.6
ModuleTest::say         #hello
ModuleTest.say          #hello

你可能感兴趣的:(function)