【问题标题】:How to pass a function into another function in the same module in elixir?如何将一个函数传递给elixir中同一模块中的另一个函数?
【发布时间】:2021-04-28 18:57:15
【问题描述】:

在python中,我们可以像下面的示例代码一样将一个函数传递给另一个函数。

def digits(n):
    return list(map(int, str(n)))

def digit_cube(n):
    return list(map(lambda x: x ** 3, digits(n)))

在长生不老药中也可以做同样的事情吗?如果是,怎么做?

【问题讨论】:

    标签: elixir


    【解决方案1】:

    可以传递匿名函数

    f = fn e -> e * 2 end
    Enum.map([1, 2, 3], f)
    

    或使用&/1捕获现有函数

    defmodule M do
      def dbl(e), do: e * 2
      def map_dbl(list) do
        Enum.map(list, &dbl/1)
      end
    end
    

    【讨论】:

    • 可能值得一提Kernel.apply/3?
    • @Segfault 我认为指出远程函数捕获以及远程函数捕获和本地函数捕获之间的区别会更有趣。
    • @Hauleth 但它会复制粘贴我明确链接的文档,不是吗?
    猜你喜欢
    • 2016-07-08
    • 2021-12-18
    • 1970-01-01
    • 2019-07-25
    • 2011-09-11
    • 2015-03-21
    • 2019-06-27
    • 2021-08-02
    相关资源
    最近更新 更多