gpt4 book ai didi

ruby - Array、Hash 和 Range 的单个 method_missing

转载 作者:太空宇宙 更新时间:2023-11-03 17:58:15 25 4
gpt4 key购买 nike

我是 Ruby 新手。有没有一种方法可以编写一个带有 method_missing 的单个“def Array/Range/Hash”,它适用于所有范围、数组和哈希,即所有 Enumerables?例如以下应该有效:

[1..5].Sum()  
[1,2,3,5].Sum()
{'x' => 1, 'y' = 4}.Sum()

Sum() 是我们在 method_missing 中定义的自定义方法。到目前为止,我已经编写了三个不同的函数来分别处理 Array、Range 和 Hash 的 method_missing。

最佳答案

您可以通过打开 Enumerable 模块并向其添加实例方法来为所有 Enumerable 定义 method_missing:

module Enumerable
def method_missing *args
puts 'hi'
end
end

[].hithere # => hi

但我建议定义具体的 sum 方法(根据 Ruby 方法命名指南,以小写字母开头)而不是将此逻辑添加到 method_missing:

module Enumerable
def sum
# your implementation
end
end

[].sum

关于ruby - Array、Hash 和 Range 的单个 method_missing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9654130/

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