首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么时候在药剂中使用匿名函数?

什么时候在药剂中使用匿名函数?
EN

Stack Overflow用户
提问于 2017-10-03 16:18:16
回答 2查看 582关注 0票数 0

什么时候在Elixir中使用匿名函数而不是命名函数?

例如,我有一个片段:

代码语言:javascript
复制
handle_open = fn
{:ok, :done} -> "OK"
{:error, _} -> "Error:"
end
handle_open.(ExAws.S3.download_file("#{Application.get_env(:ex_aws, :s3)[:bucket_s3]}", "foo.jpg", "../../public") |> ExAws.request);

在这种情况下,我使用匿名函数。如何使用命名函数获得相同的结果(多体)?

在这种情况下,使用匿名或命名函数更正确吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-03 16:44:15

您可以使用case子句执行单个函数,也可以执行两个函数子句,如下所示:

代码语言:javascript
复制
def handle_open({:ok, :done}), do: "OK"
def handle_open({:error, _}), do: "Error:"
票数 2
EN

Stack Overflow用户

发布于 2017-10-04 07:16:55

通常作为参数。

Elixir中的许多标准库函数都接受函数作为参数。

例如,Enum.map

代码语言:javascript
复制
[1, 2, 3]
|> Enum.map(fn(number) ->
  number * 2
end)

您还可以定义命名函数。

代码语言:javascript
复制
def multiple_by_two(number), do: number * 2

然后捕捉它:

代码语言:javascript
复制
Enum.map([1, 2, 3], &multiple_by_two/1)

但第一种方法也经常被使用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46549132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档