# User.new には Struct.new で渡した引数の順番で渡す User.new(1, "homu", 14) # Struct.new に keyword_init: true を渡すと User = Struct.new(:id, :name, :age, keyword_init: true) # User.new にキーワード引数で渡せるようになる p User.new(name: "homu", age: 14, id: 1) # => #<struct User id=1, name="homu", age=14> # Struct.new にブロックを渡し、その中でメソッドを定義すると # インスタンスメソッドとして定義される User = Struct.new(:last_name, :first_name) do def full_name "#{last_name} #{first_name}" end end homu = User.new(" 巴", " マミ") # ユーザが定義したインスタンスメソッドが呼べる p homu.full_name # => " 巴 マミ"