前書き
initializeメソッドを浅くしか理解していないので深掘りしてみます。
要は以下の2つのコード(initializeメソッドある、ない)の違いを明確に理解できるようになりたいです.
initializeメソッドあり
class Konan def initialize(name) @name = name end def say_name puts @name end end konan = Konan.new("コナン") konan.say_name 出力結果コナン
initializeメソッドなし
class Konan def say_name(name) puts "#{name}です" end end konan = Konan.new konan.say_name("コナン") 出力結果 コナン
そもそもinitializeメソッドとは?
⇨オブジェクト初期化メソッド
初期化とは?
⇨2つの意味がある.
①状態をリセット(元の状態に戻す)する.
例iphoneなどを売るときデータを工場出荷状態に戻すといった作業をすると思いますが。このように以前の状態に戻すことを「初期化」という.
②使用可能の状態にする(プログラミングではこっちの意味で初期化を使うことが多い)
⇨例変数の初期化.
↓のままでは変数は使えない
number
変数の初期化(変数という箱の中に値をセットする)
number = 10
使い始める前の変数(値を入れる箱)に初期値(最初の値)を設定する行為を「変数の初期化」という=変数を使用可能になる。
↓の記事が分かりやすかったので参考にしてみてください。 wa3.i-3-i.info
つまりオブジェクトの初期化とは=オブジェクトを使用可能にすること.
例えば以下のコードはオブジェクトを初期化(使用)できていない状態です。
class Konan def say_name puts @name end def introduce puts "江戸川#{@name}、探偵さ" end end konan = Konan.new("コナン") konan.say_name
say_nameメソッドを実行しようとしているのですがsay_nameメソッド内の@nameというインスタンス変数がクラス内にどこにも定義されていないことがわかります=インスタンス変数が初期化されていない(使用可能になっていない)。つまりkonan = Konan.new("コナン")でkonanというオブジェクトを作成していますがkonanオブジェクト内のメソッドが使用不可になっているということはkonanオブジェクトも初期化されていないことになります。
なのでkonanオブジェクトを初期化(使用可能)するためには@nameというインスタンス変数を定義する必要があります。
class Konan def initialize(name) @name = name end def say_name puts @name end def introduce puts "江戸川#{@name}、探偵さ" end end konan = Konan.new("コナン") konan.say_name
initializeメソッドは@nameというインスタンス変数を定義するため(初期化)のメソッドです。 これによりkonanオブジェクトが使用可能になります。=konanオブジェクトの初期化ができたことになります。