`
fujinbing
  • 浏览: 240256 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ruby 中的 module_function 关键字

    博客分类:
  • java
 
阅读更多
模块是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

分享到:
评论

相关推荐

    prototype_oop_javascript_ruby_prototype_

    Ruby中,类通过继承来扩展功能,可以使用`super`关键字调用父类的方法。同时,Ruby支持模块(Module),可以用来实现类似于JavaScript原型的混入(Mix-in)行为: ```ruby module Sayable def say_hello puts '...

    ruby_quest

    另外,`define_method`可以动态定义方法,`module_function`可以把类方法变为模块方法,增强了代码的可复用性。 Ruby中的块、 Proc 和 Lambda是重要的概念。块是代码的匿名封装,可以用`do..end`或`{..}`定义,常与...

    Ruby语言教程和经典案例

    在Ruby中,方法(function)的定义和调用非常直观。 - **定义方法**:使用`def`关键字定义方法,例如: ```ruby def greet(name) puts "Hello, #{name}!" end ``` - **匿名函数**:Ruby支持Lambda表达式和...

    prueba_modulo_ruby

    5. **模块函数**:Ruby 2.0引入了`Module#module_function`,它可以使模块内的方法变成模块函数,即不通过实例化模块就能调用这些方法。 在压缩包文件“prueba_modulo_ruby-main”中,我们可以预期找到的是这个模块...

    ruby1-导出-1.pdf

    根据提供的文件内容,我们可以整理并深入探讨Ruby编程语言中的一些核心概念和技术要点: ### Ruby 数据类型及操作 #### 数字类型 - **Number**: 包括整数 (`int`) 和浮点数 (`float`)。 - 整数:用于表示没有小数...

    Hometask_6_Closures

    在这个例子中,`innerFunction` 是闭包,因为它可以访问到 `outerFunction` 的局部变量 `outerVar`,即使在 `outerFunction` 执行完毕后,`outerVar` 仍然可以通过闭包访问。 闭包的另一个关键应用是创建私有变量。...

Global site tag (gtag.js) - Google Analytics