在Ruby中,类层次结构似乎非常随意。例如,我们可以直接在没有类的模块中定义方法,或者我们甚至可以在类中定义类。任何人都可以解释这两种情况如何运作?
答案 0 :(得分: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