0

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 で実行する必要性を取り除こうとしています)。

4

1 に答える 1