[Ruby]Dataクラス
DataクラスはRuby3.2で導入された
Structと似ているが、違う点は書き換え不可であること
コードは以下のブログから引用
プロと読み解く Ruby 3.2 NEWS - クックパッド開発者ブログ
Point = Data.define(:x, :y)
pt = Point.new(1, 2)
p pt.x #=> 1
p pt.y #=> 2
# 書き換えはできない
pt.x = 3 #=> undefined method `x=' for #<data Point x=1, y=2> (NoMethodError)
# []でフィールドを読み出せない
pt[:x] #=> undefined method `[]' for #<data Point x=1, y=2> (NoMethodError)
# newで引数が足りないとエラー
Point.new(1) #=> missing keyword: :y (ArgumentError)
一部のフィールドだけ置き換えた新しいインスタンスを作る場合 Data#with を使う
pt2 = pt.with(x: 3)
p pt2 #=> #<data Point x=3, y=2>