我在用 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/