我有以下代码实例化一个返回 OpenStruct 结果的对象。
require 'ostruct'
class TestModel
attr_accessor :result
def initializer
end
def result
OpenStruct.new(successful?: false)
end
def successful!
result.send('successful?', true)
end
end
我希望该类能够正常工作,以便我可以result
即时修改我的任何属性。
test = TestModel.new
test.result
=> #<OpenStruct successful?=false>
test.result.successful!
=> #<OpenStruct successful?=true>
此语法来自官方 OpenStruct 页面,它只能单独工作,但不能在实例化类中工作 - https://ruby-doc.org/stdlib-2.5.3/libdoc/ostruct/rdoc/OpenStruct.html
result.send('successful?', true)
我也尝试过使用lambda
但无济于事
def result
OpenStruct.new(successful?: false, :successful! => lamdba {self.uccessful? = true})
end
有任何想法吗?我真的很想知道该怎么做。