そのクラスの新しいオブジェクトが作成されると、RoRのクラスは自動的に最初のメソッドを開始しますか?
class User
attr_accessor :name, :email
def initialize(attributes = {})
@name = attributes[:name]
@email = attributes[:email]
end
def formatted_email
"#{@name} <#{@email}>"
end
end
このような新しいユーザーを作成したとします。
connor = User.new(name: "Connor B", email: "CB@example.com")
最初の方法を自動的に開始することはどのようにしてわかりますが、2番目の方法は呼び出されたときにのみ機能しますか?
回答:
回答№1は5それは自動的に呼ばれる最初のメソッドではありません、それはそれです new
コール initialize
これは、たいていのコードでは最初のメソッドです。しかし、あなたは置くことができます initialize
クラス定義内の任意の場所 new
それでも initialize
方法。
存在しない場合 initialize
メソッドが明示的に定義されている場合はデフォルトのメソッドが呼び出されます。また、これはRubyの動作です。 ない 明確にするために、Ruby on Railsの振る舞い。
ここでは、 関連Q&A あなたが悟りを見つけるかもしれないこと。一番上の答えはもう少し詳細にそれを説明して、そして実際に舞台裏で起こっていることの詳細を掘り下げる例を示します。
回答№2の場合は1
Rubyは自動的に initialize
そのクラスの新しいオブジェクトが作成されたときのmethod
new
その initialize
方法。