4.3.3. Erlang code skill¶
实例1:
function greet(Gender,Name)
if Gender == male then
print("Hello, Mr. %s!", Name)
else if Gender == female then
print("Hello, Mrs. %s!", Name)
else
print("Hello, %s!", Name)
end
=>
greet(male, Name) ->
io:format("Hello, Mr. ~s!", [Name]);
greet(female, Name) ->
io:format("Hello, Mrs. ~s!", [Name]);
greet(_, Name) ->
io:format("Hello, ~s!", [Name]).
guard:
% if ( X>=16 and X=<104)
right_age(X) when X >= 16, X =< 104 ->
true;
right_age(_) ->
false.
% if (X < 16 or X > 104)
wrong_age(X) when X < 16; X > 104 ->
true;
wrong_age(_) ->
false.
[orelse]与[;]的区别:
% 打印:a
do1(A) when A/0==1 ; true ->
io:format("a~n");
do1(_A) ->
io:format("b~n").
% 打印:b
do1(A) when A/0==1 orelse true ->
io:format("a~n");
do1(_A) ->
io:format("b~n").
说明: orelse在前一guard抛错时,继续判断下一guard
而「;」则抛错时,忽略之后的guard
代码技巧:
if State =/= locked ->
do_lock().
=>
State =/= locked andalso do_lock().