Ruby教程
Ruby控制语句
Ruby高级

Ruby 模块

Ruby 模块

Ruby 模块是方法和常量的集合。模块方法可以是实例方法或模块方法。
实例方法是包含模块的类中的方法。
模块方法可以在不创建封装对象的情况下被调用,而实例方法则不能。
它们类似于类,因为它们包含方法、类定义、常量和其他模块的集合。它们被定义为类。不能使用模块创建对象或子类。没有继承的模块层次结构。
模块主要有两个目的:
它们充当命名空间。它们可以防止名称冲突。 它们允许混合工具在类之间共享功能。
语法:
module ModuleName
   statement1
   statement2
   ...........
end
模块名称应以大写字母开头。

模块命名空间

在编写较大的文件时,会生成大量可重用的代码。这些代码被组织成类,可以插入到文件中。
例如,如果两个人在不同的文件中具有相同的方法名称。并且这两个文件都需要包含在第三个文件中。然后它可能会产生问题,因为两个包含文件中的方法名称相同。
在这里,模块机制发挥作用。模块定义了一个命名空间,您可以在其中定义您的方法和常量,而不会被其他方法和常量覆盖。
示例:
假设,在文件 1 中。 rb,我们定义了不同类型图书馆书籍的数量,如小说、恐怖等。
在 file2.rb 中,我们定义了阅读和留下来阅读的小说数量,包括小说。
在file3.rb中,我们需要加载文件file1和file2、这里我们将使用模块机制。
file1.rb
#!/usr/bin/ruby 
# Module defined in file1.rb file 
module Library 
   num_of_books = 300 
   def Library.fiction(120) 
   # .. 
   end 
   def Library.horror(180) 
   # .. 
   end 
end
file2.rb
#!/usr/bin/ruby 
# Module defined in file2.rb file 
module Novel 
   total = 123 
   read = 25 
   def Novel.fiction(left) 
   # ... 
   end 
end
file3.rb
require "Library" require "Novel" x = Library. fiction(Library::num_of_books) y = Novel. fiction(Novel::total)
模块方法的调用方法是在其名称前加上模块名称和句点,然后使用模块名称和两个冒号引用常量。

Module Mixins

Ruby 不支持多重继承。模块使用 Ruby 中的 mixin 消除了多重继承的需要。
一个模块没有实例,因为它不是一个类。但是,一个模块可以包含在一个类中。
当您在类中包含一个模块时,该类将可以访问该模块的方法。
示例:
module Name 
   def bella 
   end 
   def ana 
   end 
end 
module Job 
   def editor 
   end 
   def writer 
   end 
end 
class Combo 
include Name 
include Job 
   def f 
   end 
end 
final=Combo.new 
final.bella 
final.ana 
final.editor 
final.writer 
final.f
这里,模块名称由方法 bella 和 ana 组成。模块作业由方法编辑器和编写器组成。 Combo 类包含两个模块,因为 Combo 类可以访问所有四种方法。因此,类 Combo 作为 mixin 工作。
混合到类中的模块方法可以是实例方法或类方法。这取决于您如何将 mixin 添加到类中。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4