Elixir 使用长生不老药';带多体匿名函数的s速记符号

Elixir 使用长生不老药';带多体匿名函数的s速记符号,elixir,Elixir,给定Elixir函数add1=fn a->a+1 end,我知道可以用速记法将其表示为add1=&(&1+1) 有没有一种方法可以在多体函数中使用速记符号?例如,下面的函数返回两个数字中较大的一个 max = fn a, b when a > b -> a _a, b -> b end 有没有可能用Elixir的速记法来表达这个匿名函数?这个例子很有效 max = fn (a, b) when a >= b -> a (_a, b) -&g

给定Elixir函数
add1=fn a->a+1 end
,我知道可以用速记法将其表示为
add1=&(&1+1)

有没有一种方法可以在多体函数中使用速记符号?例如,下面的函数返回两个数字中较大的一个

max = fn
  a, b when a > b -> a
  _a, b -> b
end
有没有可能用Elixir的速记法来表达这个匿名函数?

这个例子很有效

max = fn
    (a, b) when a >= b -> a
    (_a, b) -> b
end

IO.puts max.(0, 2) # 2
IO.puts max.(2, -5) # 2
我不认为这是一种速记形式。

一般解决方案是将所有参数放在
案例中

max = &
  case {&1, &2} do
    {a, b} when a > b -> a
    {a, b} -> b
  end

但是这只会让它变长。

这个“速记符号”是怎么回事?我看到你修正了警告,我会调整上面的例子。这是速记,但不是多体。这甚至可以简化为
&if(&1>&2,do:&1,else:&2)
。或者甚至
&1>&2&&1|&2
。当两个值都是错误的但不同时,会给出错误的答案:
max=&1>&2&&1|&2;max.(false,nil)==max.(nil,false)#=>false
。从目前的答案来看,上面的函数似乎有使用条件或逻辑运算符的速记符号,但没有速记形式将其表示为多体函数。@Kabie我也在成都,你能给我留电子邮件吗?
max = &
  case {&1, &2} do
    {a, b} when a > b -> a
    {a, b} -> b
  end