gpt4 book ai didi

ruby - `respond_to_missing?` 的第二个参数有什么用吗?

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

使用 method_missing 时在 Ruby 中,它是 almost always a good idea定义 respond_to_missing?

respond_to_missing?接受两个参数;我们正在检查的方法的名称 (symbol),以及一个指示我们是否应该在检查中包含私有(private)方法的 bool 值 (include_all)。

现在我感到困惑的是:method_missing不接受任何可能指示它是否应该调用私有(private)方法的参数,如 respond_to_missing?做。此外,method_missing无论原始方法调用是在公共(public)上下文还是私有(private)上下文中,也无论 respond_to_missing? 是什么,都会被调用在适当的上下文中返回给定方法。所以method_missing的所有操作可公开访问。

如果是这样,那么 respond_to_missing? 的第二个参数有什么用? (include_all) 服务?给定对象是否响应缺失的方法不能受到调用缺失方法的上下文的影响,那么为什么还要有这个参数呢?

最佳答案

我认为 respond_to_missing? 有第二个参数,原因与 respond_to? 相同。做。在这两种情况下,它都允许代码以尊重方法隐私的方式询问对象它响应什么方法。如果使用得当,它可以帮助您更好地封装对象。

您指出了 method_missing 中缺少的一个特性,即它应该有一个参数来说明该方法是在公共(public)上下文还是私有(private)上下文中调用的。也许 method_missing 有一天会有这个功能。在那之前,通过 method_missing 实现的对象的所有功能实际上都是公开的,但您仍然可以阻止人们在您的文档中使用它并通过 respond_to_missing?

关于ruby - `respond_to_missing?` 的第二个参数有什么用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24213235/

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