OpenStruct がある場合:
require 'ostruct'
open_struct = OpenStruct.new
[]
場合によっては動作するものを上書きできます
open_struct.define_singleton_method(:[]) do |*args|
puts args.map(&:class)
puts args
end
open_struct.a = 1
open_struct[:a]
# => Symbol
# a
ただし[]
、ドット メソッド構文を使用する場合、このメソッドは呼び出されません。
open_struct.a
# => 1
OpenStruct から継承し、Javascript オブジェクトのように動作するクラスを作成しようとしています (基本的にcall
、値として格納されている proc で実行する必要性を取り除こうとしています)。