在Ruby中,模块类似于类,但不能完全视为类。您无法实例化模块,这仅意味着您无法创建模块对象并为其提供内存。模块是方法,类和常量的集合。在模块内部声明的任何变量都将被视为常量,并且其值将来将永远无法更改。借助模块,您可以在两个类之间共享方法。您只需要将它们包括在类中,模块的方法就可以被该类访问。
当您想在不同的类中使用相同的方法但又想避免一次又一次地重新定义它们时,模块会提供很大的帮助。
现在,让我们首先了解该模块的语法,如下所示:
module Module_name #code end
您应该使用“模块”关键字来定义模块。
现在,为了更好地理解该概念,让我们看一下下面指定的一些示例:
=begin Ruby program to demonstrate implementation of module. =end module Student Const = 100 def Student.names puts "Your name is not available!" end def Student.address puts "Your address is not available!" end def Student.education puts "Education is not available!" end end puts Student::Const Student.names Student.address Student.education
输出结果
100 Your name is not available! Your address is not available! Education is not available!
您可以在上面的代码中观察到我们正在创建一个名为“ Student”的模块。我们定义了多种方法。要使用模块常量,必须在模块名称和常量中使用::运算符。
现在,让我们看看如何在类中使用模块,或者可以借助下面提供的示例来说明如何实现模块的主要目标之一:
=begin Ruby program to demonstrate implementation of module. =end module Student Const = 100 def names puts "Your name is not available!" end def address puts "Your address is not available!" end def education puts "Education is not available!" end end class School include Student def gets puts"Welcome to the school!" end end obj = School.new obj.education obj.address obj.names obj.gets
输出结果
Education is not available! Your address is not available! Your name is not available! Welcome to the school!
在上面的代码中,您可以观察到我们正在创建一个名为Student的模块。然后我们创建一个名为School的类。借助“ include”关键字,我们将Student模块包括在School类中。我们实例化了School类,然后在该对象的帮助下调用了对象的方法以及类的方法。