Ruby では、クラス階層は非常に恣意的に見えます。たとえば、クラスなしでモジュール内にメソッドを直接定義することも、クラス内でクラスを定義することもできます。これら2つのシナリオがどのように機能するかを誰か説明できますか?
質問する
79 次
1 に答える
1
クラスなしでモジュール内でメソッドを直接定義できます
まず、Ruby におけるクラスとモジュールの違いを理解する必要があります。
これを試してみましょう:
module MyModule
end
MyModule.new
あなたが得る:NoMethodError: undefined method `new' for MyModule:Module
これは最も基本的な違いの 1 つで、モジュールはインスタンス化できません。モジュールは、コードを論理部分に分割するため、またはコードの重複を避けるためのツールとして使用されます。
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 に答える