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
Elixir 什么是在函数子句中匹配相同值的长生不老药?_Elixir - Fatal编程技术网

Elixir 什么是在函数子句中匹配相同值的长生不老药?

Elixir 什么是在函数子句中匹配相同值的长生不老药?,elixir,Elixir,例如,在Erlang中: 1> (fun(A,A) -> same_values_only end)(7,7) same_values_only 我天真地尝试了长生不老药中的插入符号,但没有成功: iex(3)> (fn(a,^a) -> :same_values_only end).(7,7) ** (CompileError) iex:3: unbound variable ^a 显而易见的解决方案当然有效 iex(2)> (fn(a,

例如,在Erlang中:

1> (fun(A,A) -> same_values_only end)(7,7)
same_values_only
我天真地尝试了长生不老药中的插入符号,但没有成功:

iex(3)> (fn(a,^a) -> :same_values_only end).(7,7)           
** (CompileError) iex:3: unbound variable ^a
显而易见的解决方案当然有效

iex(2)> (fn(a,a) when a == a -> :same_values_only end).(7,9)
** (FunctionClauseError) no function clause matching in :erl_eval."-inside-an-interpreted-fun-"/2

iex(2)> (fn(a,a) when a == a -> :same_values_only end).(7,7)
:same_values_only

但我想知道是否有一种解决方案更接近它在Erlang中的工作原理?

它与Erlang中的工作原理相同-在模式中多次使用变量会强制它在所有情况下都具有相同的值

fn(a, a) -> :same_values_only

pin运算符允许强制执行变量的上一个值。模式匹配不是从左到右求值,而是作为一个整体表达式求值,因此在模式匹配之前不会绑定任何变量。

显然,我是个白痴,几个小时前就该睡觉了。。。谢谢