1年くらい前にRubyの勉強のためにStruct, OpenStructクラスの便利メソッドをまとめたもの
参考
・パーフェクトRuby
・https://docs.ruby-lang.org/ja/latest/class/Struct.html
・https://docs.ruby-lang.org/ja/latest/class/OpenStruct.html
Struct
構造体クラス
基本的な使い方
Structのサブクラスを作って利用する。
point = Struct.new('Point', :x, :y) # => Struct::Point
item = point.new(10, 30) # => #<struct Struct::Point x=10, y=30>
p item.x # => 10
メソッド定義
Struct.newにブロックを渡し、その中にインスタンスメソッドを定義する。
Human = Struct.new('Human', :age, :gender) do
def teen?
(13..19).include?(age)
end
end
Human.new(17).teen? # => true
OpenStruct
要素を動的に追加・削除できる手軽な構造体を提供するクラス
require 'ostruct'
Human = OpenStruct.new
Human.gender = 'male'
p Human.gender # => "male"
初期値にHashを使用することもできる。
require 'ostruct'
Son = OpenStruct.new({gender: :male})
p Son.gender # => :male