【发布时间】:2016-10-25 04:16:12
【问题描述】:
一直在努力学习 Elixir,我有点好奇做单行 if/else 的不同方式。
我从...开始
if left_side_wins?(p, c) do
{"Humanity", p, c}
else
{"The Machine", c, p}
end
|> print_winner
... 为任一获胜者正确地管道元组。但是这个不...
if left_side_wins?(p, c), do: {"Humanity", p, c}, else: {"The Machine", c, p}
|> print_winner
...我知道这是因为|> 被认为是else 的一部分,我可以用括号来修复它...
if(left_side_wins?(p, c), do: {"Humanity", p, c}, else: {"The Machine", c, p})
|> print_winner
... 现在可以使用了。对于任一获胜者,元组都会正确地通过管道传送到print_winner。
但我也可以也使用内联的 do/else/end 块并执行...
if left_side_wins?(p, c) do {"Humanity", p, c} else {"The Machine", c, p} end
|> print_winner
...也可以。
我读过的每个资源都描述了使用do:.., else:.. 格式,但do ... else ... end 似乎更简洁且不易出错。
除了我所看到的之外,它们之间的主要区别是什么?
do: ..., else: ... 似乎是首选,但它不是对运算符优先级更敏感吗?
【问题讨论】:
标签: elixir