gpt4 book ai didi

ruby - 仅当方法不存在时如何实现它

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

我在用 Ruby 编写脚本时意识到我需要使用 Enumerable#sum 方法。但是,该方法仅存在于 Ruby 2.4 及更高版本中 - 而我有 2.2。

所以我可以自己添加方法,像这样

module Enumerable
def sum(init = 0, &block)
block ||= lambda { |x| x }
map(&block).inject(init, :+)
end
end

但是如果我在有足够高版本的 Ruby 的电脑上运行脚本,我的实现将覆盖标准库中的脚本。

当且仅当 Enumerable#sum 方法不存在时,我如何实现它?

最佳答案

我会简单地使用 method_defined?

就像这个例子:

# sum implementation for Ruby below 2.4
unless Enumerable.method_defined? :sum
module Enumerable
def sum(init = 0)
inject(init, :+)
end
end

关于ruby - 仅当方法不存在时如何实现它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52427168/

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