ハッシュ型構造でメソッドを初期化するときに、いつ/なぜ、または単なる好みの問題であるかについて、いくつかの混乱に遭遇しました。
class Person1
attr_reader :name, :age
def initialize(params)
@name = params[:name]
@age = params[:age]
end
end
me = Person1.new(name: 'John Doe', age: 27)
puts me.name
puts me.age
#----------------------------------------------
class Person2
attr_reader :name, :age
def initialize(name, age)
@name = name
@age = age
end
end
me = Person2.new('John Doe', 27)
puts me.name
puts me.age
#----------------------------------------------
class Person3
attr_reader :person
def initialize(name, age)
@person = { name: name,
age: age }
end
end
me = Person3.new('John Doe', 27)
puts me.person[:name]
puts me.person[:age]
好みの問題であれば、ハッシュを渡すだけが好きですが、ハッシュ自体に別の属性リーダー、ライターが必要な場合、これが問題になることがわかりました。経験則はありますか?paramsを使ったRailsの記事をよく見かけます。