在 Ruby 中,类层次结构似乎非常随意。例如,我们可以在没有类的情况下直接在模块中定义方法,甚至可以在类中定义一个类。谁能解释这两种情况是如何工作的?
问问题
79 次
1 回答
1
我们可以在没有类的情况下直接在模块中定义方法
首先,您需要了解 Ruby 中类和模块之间的区别。
让我们试试这个:
module MyModule
end
MyModule.new
你得到 :NoMethodError: undefined method `new' for MyModule:Module
这是最基本的区别之一,模块不是可实例化的。模块用作将代码划分为逻辑部分或避免代码重复的工具,例如:
module MyModule
def hello
puts "Hello world"
end
end
class Klass1
include MyModule
end
class Klass2
include MyModule
end
在这里,Klass1
&Klass2
将继承该hello
方法。
现在,关于嵌套类。
如您所见,您可以在类中定义类,这只是一种命名类的方法,用于组织目的:
class MyKlass
class MyNestedKlass
end
def something
MyNestedKlass.new
end
end
MyKlass::MyNestedKlass.new
于 2013-03-24T10:57:38.043 回答