gpt4 book ai didi

ruby:委托(delegate)对象是否响应方法

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

我想在 Ruby 中使用委托(delegate),但我不能保证目标对象响应我将调用的所有方法。我可以用默认行为定义委托(delegate)吗?

例如

class DummyPresenter
delegate :name, :age, :to => :@content, :default => nil
def initialize(content)
@content = content
end
end

class Student
def name
"name"
end
end

> DummyPresenter.new(Student.new).age # => nil
> DummyPresenter.new(Student.new).name # => "name"

现在,上面的例子会引发:

NoMethodError:
undefined method `age' for #<Student:0xa121212>

最佳答案

def method_missing(method, *args)
if @content.respond_to? method
@content.send method, *args
else
#your default behaviour (or super)
end
end

你也可以使用 DelegateClass,它会做同样的事情。

关于ruby:委托(delegate)对象是否响应方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11188598/

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