Un truc de ce genre, ptet ?
-module(toto).
-export([main/0]).
%% Retourne {false,3}
foo() ->
X = 3, % Assigne
R = case {1,2} of
{X,_} -> true; % teste si la première projection vaut 3. Vrai si oui,
_ -> false % Faux si non.
end,
{R,X}.
%% Retourne {true,1}
bar() ->
case {1,2} of
{X,_} -> X = X; % teste si la valeur est une paire, si oui, lie X et 1, puis
% vérifie via pattern match si X = X est vrai.
_ -> X = ohmygod % assigne ohmygod à X sinon
end, %% Maintenant, X vaut 1, alors qu'on est sorti de la portée du CASE
{true,X}.
% Que retourne cette fonction?
% quux() ->
% X = 41,
% X = 42.
[^] # Re: Erlang
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche Apprendre un langage de programmation par an. Évalué à 2.
-module(toto).
-export([main/0]).
%% Retourne {false,3}
foo() ->
X = 3, % Assigne
R = case {1,2} of
{X,_} -> true; % teste si la première projection vaut 3. Vrai si oui,
_ -> false % Faux si non.
end,
{R,X}.
%% Retourne {true,1}
bar() ->
case {1,2} of
{X,_} -> X = X; % teste si la valeur est une paire, si oui, lie X et 1, puis
% vérifie via pattern match si X = X est vrai.
_ -> X = ohmygod % assigne ohmygod à X sinon
end, %% Maintenant, X vaut 1, alors qu'on est sorti de la portée du CASE
{true,X}.
% Que retourne cette fonction?
% quux() ->
% X = 41,
% X = 42.
main() ->
%io:format("~w, ~w, ~w~n",[foo(),bar(),quux()]).
io:format("~w, ~w~n",[foo(),bar()]).