Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 将参数传递给函数并通过"&&引用;_Elixir - Fatal编程技术网

Elixir 将参数传递给函数并通过"&&引用;

Elixir 将参数传递给函数并通过"&&引用;,elixir,Elixir,有没有办法缩短这些类型的方法调用: aaa = Enum.find(Statuses, fn(x) -> x.name == :pending end) 对这样的事情: aaa = Enum.find(Statuses, &==, [:name, :pending]) 也就是说,要将算术运算符“==”、结构字段名name和值:pending作为参数传递 您可以使用: aaa = Enum.find(Statuses, &(&1.name == :pending

有没有办法缩短这些类型的方法调用:

aaa = Enum.find(Statuses, fn(x) -> x.name == :pending end) 
对这样的事情:

aaa = Enum.find(Statuses, &==, [:name, :pending])
也就是说,要将算术运算符“==”、结构字段名
name
和值
:pending
作为参数传递

您可以使用:

aaa = Enum.find(Statuses, &(&1.name == :pending))

iex(1)>f=&(&1.name==:待定)
#作用
iex(2)>f.({name::pending})
真的
iex(3)>f.({name::complete})
假的
您可以使用:

aaa = Enum.find(Statuses, &(&1.name == :pending))

iex(1)>f=&(&1.name==:待定)
#作用
iex(2)>f.({name::pending})
真的
iex(3)>f.({name::complete})
假的

此外,Dogbert的答案非常完美,像往常一样,为了格式化,我也会把我的答案放在这里

这是一个完美的例子,当长生不老药“阻止”你做错事。如果手头上没有这样的方法,这几乎意味着这种方法是错误的

您正在寻找一个结构,该结构具有
名称
:pending
。使用宏显式执行此操作:


引用文件:

在筛选查找枚举中的值时非常有用:

list = [{:a, 1}, {:b, 2}, {:a, 3}]
Enum.filter list, &match?({:a, _}, &1)
#⇒ [{:a, 1}, {:a, 3}]

另外,Dogbert的答案是完美的,像往常一样,为了格式化,我也会把我的答案放在这里

这是一个完美的例子,当长生不老药“阻止”你做错事。如果手头上没有这样的方法,这几乎意味着这种方法是错误的

您正在寻找一个结构,该结构具有
名称
:pending
。使用宏显式执行此操作:


引用文件:

在筛选查找枚举中的值时非常有用:

list = [{:a, 1}, {:b, 2}, {:a, 3}]
Enum.filter list, &match?({:a, _}, &1)
#⇒ [{:a, 1}, {:a, 3}]

不幸的是,这是不正确的:
[%{n:1,name::complete},%{n:2,name::pending}]|>Enum.find(&%{name::pending}=&1)#=>**(MatchError)右侧值不匹配:%{n:1,name::complete}
@Dogbert确实,但这看起来很傻。它可能会起作用(可能不是那样,但是使用其他一些
Enum.select/2
或类似的方法。)我将删除此答案,并填充一个功能请求。不幸的是,这是不正确的:
[%{n:1,name::complete},%{n:2,name::pending}]|>Enum.find(&%{name::pending}=&1)#=>**(MatchError)右边的值不匹配:%{n:1,name::complete}
@Dogbert确实如此,但这在我看来很愚蠢。它可能会起作用(可能不是那样,但是使用其他的
Enum.select/2
或类似的方法)。我将删除这个答案,并完成一个功能请求。
list = [{:a, 1}, {:b, 2}, {:a, 3}]
Enum.filter list, &match?({:a, _}, &1)
#⇒ [{:a, 1}, {:a, 3}]