【发布时间】:2021-10-06 03:38:55
【问题描述】:
如果在标准 Elixir 库中有这个功能会很好,但我们没有。
Date.add(date, n, :month) # where n could be +/-
你将如何实现它?
这看起来是一个很好的起点:https://stackoverflow.com/a/53407676/44080
【问题讨论】:
-
从链接的问题中获取我的答案并用
Enum.reduce(1..n, date, fn _, acc -> previous_month(acc) end)包装会有什么问题? -
如果@AlekseiMatiushkin 的答案对您不起作用,您可能应该在您的问题中添加一些细节来解释为什么您不能使用他的答案。我不清楚为什么他的回答不能满足你的需要。
-
@OnorioCatenacci 说您需要 14 个月前的日期?你要打多少电话到
previous_month(acc)?我认为这个想法是只打一个电话 -
嗯。对一个 Elixir 函数的一次调用会产生多少个处理器滴答声?只需像我上面展示的那样编写一个包装器,然后调用这个包装器。 @OnorioCatenacci 老实说,我不确定 OP 之后的解决方案是什么。
-
@AlekseiMatiushkin 也许我不明白您提出的解决方案:
Enum.reduce(1..n, date, fn _, acc -> previous_month(acc) end)。你在做Enum.reduce(1..n, ...意味着你至少要调用previous_month(acc)次n。这就是我所说的 n 次调用