gpt4 book ai didi

ruby - 访问 OpenStruct 中不存在的属性时引发异常

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

我正在尝试弄清楚如何使 OpenStruct 的子类(或与此相关的任何类)或散列在我尝试访问尚未设置的属性时引发自定义异常.我无法让 define_methodmethod_missing 执行此操作,所以我不知道应该如何在 Ruby 中完成。

这是一个例子:

class Request < OpenStruct...

request = Request.new

begin
request.non_existent_attr
rescue CustomError...

我可以想象它必须是这样的:

class Hash
# if trying to access key:
# 1) key exists, return key
# 2) key doesn't exist, raise exception
end

编辑: 存在的属性不应引发异常。我正在寻找的功能是让我可以自由访问属性,如果它不存在,我的自定义异常将被引发。

最佳答案

如果您需要严格的散列,只需:

class StrictHash < Hash
alias [] fetch
end

它按预期工作:

hash = StrictHash[foo: "bar"]

hash[:foo]
# => "bar"

hash[:qux]
# stricthash.rb:7:in `fetch': key not found: :qux (KeyError)
# from stricthash.rb:7:in `<main>'

关于ruby - 访问 OpenStruct 中不存在的属性时引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16905191/

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