読み込み専用の構造体
Rubyの読み込み専用の構造体クラスです。 読み込み専用といっても、もちろんnew(...)で最初は値をセットするんですけど。
ただ、メンバーの量が少ないようなら自作クラスの方が意図が伝わりやすくてよさげ。
Structに値の更新を抑止する機能が有ればいいんだけど……
http://ruby.janlelis.de/65-value_struct-read-only-structs-in-ruby
# # # # # # # # #
# /65/immutable_struct.rb
#
# by Jan Lelis
# e-mail: mail@janlelis.de
# type/version: ruby
# snippet url: http://ruby.janlelis.de/65/immutable_struct.rb
# original post: http://ruby.janlelis.de/65-value_struct-read-only-structs-in-ruby
# license: CC-BY (DE)
#
# (c) 2012 Jan Lelis.
class ValueStruct < Struct
VERSION = '0.2.0'
undef []=
def initialize(*args, &block)
super(*args, &block)
members.each{ |member| instance_eval{ undef :"#{member}=" } }
end
def inspect
super.to_s.sub('struct', 'ValueStruct')
end
end