私は「Beginning Ruby」という本に取り組んでいます。カプセル化に至るまで、すべてが順調に進んでいました。このコードが何をしているのかはわかりますが、メソッドでこのように設定されている理由がわかりません。
興味のある方は、この本のカプセル化に関するページへのリンクをご覧ください。
class Person
def initialize(name)
set_name(name)
end
def name
@first_name + ' ' + @last_name
end
def set_name(name)
first_name, last_name = name.split(/\s+/)
set_first_name(first_name)
set_last_name(last_name)
end
def set_first_name(name)
@first_name = name
end
def set_last_name(name)
@last_name = name
end
end
p = Person.new("Fred Bloggs")
puts p.name
このようなものが同じことを達成できるように私には思えます:
class Person
def initialize(name)
@first_name, @last_name = name.split(/\s+/)
end
def name
@first_name + ' ' + @last_name
end
end
p = Person.new("Fred Bloggs")
puts p.name
個別のメソッドでオブジェクト変数を設定する手間がかかるのはなぜでしょうか?