鉴于Elixir函数add1 = fn a -> a + 1 end
,我知道可以用速记符号表示add1 = &(&1 + 1)
有没有办法在多体功能中使用速记符号?例如,以下函数返回两个数字中的较大者。
max = fn
a, b when a > b -> a
_a, b -> b
end
是否可以使用Elixir的速记符号来表达此匿名函数?
答案 0 :(得分:1)
max = &
case &1 > &2 do
true -> &1
false -> &2
end
我不认为这是一种简写形式。
通用解决方案将所有参数放在case
:
max = &
case {&1, &2} do
{a, b} when a > b -> a
{a, b} -> b
end
但这只会让它更长。
答案 1 :(得分:0)
此示例有效
max = fn
(a, b) when a >= b -> a
(_a, b) -> b
end
IO.puts max.(0, 2) # 2
IO.puts max.(2, -5) # 2