Ruby中的模块

Ruby模块

在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类,然后在该对象的帮助下调用了对象的方法以及类的方法。