gpt4 book ai didi

ruby - 我可以扩展 Ruby 类以动态地表现得像 OpenStruct 吗?

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:33 26 4
gpt4 key购买 nike

我有一个包含模块的 Ruby 类。我希望包含的类表现得像 OpenStruct。我如何在不显式继承 OpenStruct 的情况下实现这一目标?

class Book
include MyModule
end

module MyModule
def self.included(klass)
# Make including class behave like OpenStruct
end
end

代替

class Book < OpenStruct
include MyModule
end

最佳答案

您可以将您的类不处理的所有方法委托(delegate)给 OpenStruct:

require 'ostruct'

class Test_OS

def initialize
@source = OpenStruct.new
end

def method_missing(method, *args, &block)
@source.send(method, *args, &block)
end

def own_method
puts "Hi."
end

end

t = Test_OS.new
t.foo = 1
p t.foo #=> 1
t.own_method #=> Hi.

关于ruby - 我可以扩展 Ruby 类以动态地表现得像 OpenStruct 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10760284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com