Erlang 实现三目运算
众所周知,Erlang 没有三目运算符的,不过可以通过以下方式定义
-define(IIF(Cond,E1,E2), (case (Cond) of true -> (case is_function(E1) of true->apply(E1, []); false->E1 end); false -> (case is_function(E2) of true->apply(E2, []); false->E2 end) end)).
然后就可以这样使用了:
A = 10,
B = ?IIF(A > X, fun()->
A + 20
end, A * X)