美文网首页
ruby module 总结

ruby module 总结

作者: will2yang | 来源:发表于2018-04-08 22:22 被阅读0次

1.Mix-in 扩展

module MyModule # 共通的方法等
end
class MyClass1
include MyModule
# MyClass1中独有的方法
end
class MyClass2
include MyModule
# MyClass2中独有的方法
end

2.提供命名空间

使用 模块名.方法 的方式调用方法 这样的方法称为 模块函数

# 检查文件是否存在
p FileTest.exist?("/usr/bin/ruby") #=> true
# 文件大小
p FileTest.size("/usr/bin/ruby") #=> 1374694

3.module_function

使用了module_function,就可以使用:“模块名 . 方法名”的形式调用

module FooModule
  def foo
    p self
  end
  module_function :foo
end
FooModule.foo

4.Mix-in

module M
  def meth
    "meth" 
  end
end
class C
  include M
end
c = C.new
p c.meth # =>  "meth"

C.include?(M)   #=> true

类 C 的实例在调用方法时,Ruby 会按类 C、模块 M、类 C 的父类 Object 这个顺序查找该 方法,并执行第一个找到的方法。被包含的模块的作用就类似于虚拟的父类。

5.查找方法的规则

1 同继承关系一样,原类中已经定义了同名的方法时,优先使用该方法。
2 在同一个类中包含多个模块时,优先使用最后一个包含的模块。
3 嵌套 include 时,查找顺序也是线性的,此时的关系如图 8.8 所示。
4 相同的模块被包含两次以上时,第二次以后的会被省略。

6.extend方法

extend方法可以使单例类包含模块,并把模块的功能扩展到对象中.

module Edition
  def edition(n)
    "#{self} 第#{n}版"
  end
end
str = "Ruby基础教程"
str.extend(Edition)   #=> 将模块 Mix-in 进对象
p str.edition(5) #=> "Ruby基础教程第5版"

include 可以帮助我们突破继承的限制,通过模块扩展类的功能;而 extend 则可以帮助 我们跨过类,直接通过模块扩展对象的功能。

相关文章

  • ruby module 总结

    1.Mix-in 扩展 2.提供命名空间 使用 模块名.方法 的方式调用方法 这样的方法称为 模块函数 3.mod...

  • Ruby Module Summary

    module可以这么用 get extended modules get included modules anc...

  • Ruby module 模组

    1. Module 的概念 In Ruby, modules are somewhat similar to cl...

  • ruby元编程(1)

    面试中碰到一些面试官提到的关于ruby元编程的问题的总结 class和module的区别 官方说明class do...

  • es6

    模块规范(module) Ruby 的 require、Python 的 import、 CSS 有 @impor...

  • Ruby中的Module

    Ruby中没有Java语言中的interface,Ruby只支持单继承。Ruby通过Mix-in提供对类的扩展,其...

  • Ruby、RVM-使用总结

    Ruby、RVM-使用总结 安装或更新Ruby 方法一:使用Homebrew安装Ruby Homebrew 是什么...

  • Ruby里面extend include prepend 区别

    在Ruby中,我们如果需要调用module的话可以使用extend、include、prepend,但是这些关键字...

  • 2016-11-06 task-list

    今日任务 ruby on rails 第八章 ruby on rails 指南 今日总结 Action view ...

  • [分享]总结Web应用中常用的各种Cache

    总结Web应用中常用的各种Cache 来源:Ruby China 网址:https://ruby-china.or...

网友评论

      本文标题:ruby module 总结

      本文链接:https://www.haomeiwen.com/subject/vqxvhftx.html