0

ハッシュ型構造でメソッドを初期化するときに、いつ/なぜ、または単なる好みの問題であるかについて、いくつかの混乱に遭遇しました。

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の記事をよく見かけます。

4

1 に答える 1