まずinitializeメソッドとは、Rubyでクラス名.new
でインスタンスを生成したときに呼び出されるメソッドで、インスタンスの生成と同時に実行したい処理を記述します。
このとき、使用するインスタンス変数は全てこちらで初期化が必要です。
initializeメソッドの書き方
例えば、このように初期化の時点で代入してしまう
ものに関しては分かりやすいと思います。
class ClassName
def initialize
@colors = ["black", "white", "gray", "red", "blue"] # 初期化の時点で値を代入している
end
def choose_color
@colors.sample
end
end
ただ、このように後から代入することが決まっていて、初期化時点では空
の値の場合はどうしたら良いのか↓
class ClassName
def initialize
# どう書けば良い?
end
def write_review
puts "タイトルを入力してください"
@title = gets.chomp # 初期化の時点では空、write_reviewメソッドを呼び出してから値を代入する
end
end
こうします↓
class ClassName
def initialize
@title = ""
end
def write_review
puts "タイトルを入力してください"
@title = gets.chomp
end
end
ここから言えることはインスタンスを生成した際に代入できるのであればそうでよいが、実行後に値が代入されるのであれば、もっともベーシックな リテラルで初期化をする必要があるということです。
基本形は以下です。
class ClassName
def initialize
@string = ''
@integer = 0 # or nil
end
end