Elixir cond控制结构是否允许匹配多个案例?

Elixir cond控制结构是否允许匹配多个案例?,elixir,Elixir,是否有类似于Elixir cond语句的故障排除功能,允许我匹配多种情况?我想这样做是为了避免重复同一行代码。我还希望避免在if块中使用长链逻辑或| |析取语句。现在,我重复这样的代码: cond do top == nil -> eval(rest, [operator | output_queue], opstack) top == "(" -> eval(rest, [operator | output_queue], opstack) compare_to(ope

是否有类似于Elixir cond语句的故障排除功能,允许我匹配多种情况?我想这样做是为了避免重复同一行代码。我还希望避免在if块中使用长链逻辑或| |析取语句。现在,我重复这样的代码:

cond do
  top == nil -> eval(rest, [operator | output_queue], opstack)
  top == "(" -> eval(rest, [operator | output_queue], opstack)
  compare_to(operator, top) < 0 -> # keep popping
  _-> # some catchall
end 
我还希望避免在if块中使用长链逻辑或| |析取语句

与case不同,您不需要切换到if来使用| |-cond,它接受任何表达式,您可以将top==nil和top==与| |连接起来以获得所需的:

cond do
  top == nil || top == "(" -> eval(rest, [operator | output_queue], opstack)
  compare_to(operator, top) < 0 -> # keep popping
  _-> # some catchall
end 

哈谢谢这是一个漫长的夜晚