当我们定义没有类和嵌套类的方法时,ruby层次结构如何工作?

时间:2013-03-24 05:17:54

标签: ruby

在Ruby中,类层次结构似乎非常随意。例如,我们可以直接在没有类的模块中定义方法,或者我们甚至可以在类中定义类。任何人都可以解释这两种情况如何运作?

1 个答案:

答案 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