Rubyはオブジェクトのコンストラクタとしてinitialize
メソッドを使用します。これはRuby言語の一部であり、Railsフレームワークに特有のものではありません。 Class
にnew
クラスレベルのメソッドを呼び出す
@person = Person.new
そのクラスのタイプを割り当て、そのオブジェクトのinitialize
メソッドを呼び出します:
http://www.ruby-doc.org/core-1.9.3/Class.html#method-i-new
次のような新しいオブジェクトがinstanstiateときに呼び出されます
すべてのオブジェクトは、パラメータを受け入れないデフォルトのinitialize
メソッドを持っています(あなたはそれを書く必要はありません - あなたはそれを自動的に取得します)。オブジェクトにinitialize
メソッドで異なる処理をさせたい場合は、独自のバージョンを定義する必要があります。
この例では、initialize
メソッドにハッシュを渡しています。このメソッドを使用して、デフォルト値の@name
と@email
を設定できます。
あなたはこのようなとしてこれを使用
:初期化子は、属性のデフォルト値を持っている理由は、(attributes = {}
がamptyハッシュにデフォルト値を設定します - {}
)
@person = Person.new({name: 'John Appleseed', email: '[email protected]'})
あなたもせずにそれを呼び出すことができるようです引数を渡す。引数を指定しないと、attributes
は空のハッシュになるので、@name
と@email
の値はnil
となります。これらのキーには値が存在しません(:name
と:email
)。
カップル以上の点: 'initialize'を使用するメカニズムは実際にはRubyではなくRubyです。属性のデフォルト値( 'attributes = {}')として空のハッシュを渡すと、ハッシュ 'attributes [:name]#nil'に設定されていないキーにアクセスしようとすると正常にnilを返します。メソッド内の属性にアクセスする 'initialize(attributes)'のように、 'attributes [:something]#error'というエラーがスローされます) – tamersalama
良い点 - それがRubyの一部であり、それは 'new'メソッドとそれが' initialize'を呼び出す方法を説明します。 –
マイケルとtamersalama、情報ありがとう。私は今初期化することを理解しています。 – jason328