【发布时间】:2016-07-25 15:53:13
【问题描述】:
这看起来很简单,但我似乎无法在文档中找到它。如果列表或元组中存在项目,我需要简单地返回 true 或 false。 Enum.find/3 真的是最好的方法吗?
Enum.find(["foo", "bar"], &(&1 == "foo")) != nil
【问题讨论】:
-
对于一个列表,我可以看到您想在哪里查看该项目是否存在其中 Enum.member?/2 会很好。但是对于一个元组,你通常关心值的位置,这是元组的优点之一......如果你不关心位置,可能需要考虑使用元组
-
如果正确,您可能希望将@Gazler 的答案标记为已接受的答案。
-
关于性能的快速说明。
x in y守卫非常高效,因为它在编译时创建了不同的函数定义。在运行时它的性能较差,相当于Enum.member?,尽管它们适用于小的n。对于较大的 n 和紧凑的循环,您将从散列值(例如MapSet.member?)中获得更好的性能。但在大多数情况下,x in y和Enum.member?都可以!
标签: elixir