0

定数名とclassキーワードを使用してクラスを作成できます。

class MyClass1; end

でクラスを作成し、Class.newそれを定数または変数に割り当てることもできます。

MyClass2 = Class.new do; end
myClass3 = Class.new do; end

classしかし、小文字で始まる名前のキーワードを使用してクラスを作成することはできません:

class myclass4; end # => Error

これら4つの間に根本的な違いはありますか?myclass3レギュラークラスじゃないの?

4

2 に答える 2

1
  • 最初のメソッド ( class MyClass; end) は言語構文の明示的な部分 (つまりclassキーワード) であり、クラスの名前は定数でなければなりません。

  • 2 番目のメソッド ( Class.new) は通常のメソッド呼び出しであり、Class の匿名インスタンスを返します。この匿名インスタンスは、他のオブジェクトと同様に扱うことができます。

それ以外は、2 つの方法に違いはありません。最初の型を非定数に割り当てることはできますが、最初に定数にも割り当てる必要があることに注意してください。

class MyClass; end
my_class = MyClass
于 2013-07-07T15:27:32.113 に答える