Witam,
małe pytanie, które zawsze mi sprawia problemy, jak poprawnie napisać case of tak, aby po otrzymaniu znaku 'q' wyszedł mi z pętli ?
Oto kod:
-module(training).
-compile(export_all).
main() ->
Pid = spawn(training, msg, []),
register(message, Pid),
{ok, [A]} = io:fread("add sth to list: ", "~s"),
message ! {lista, [A]},
add_to_list([], A).
add_to_list(List) ->
io:fwrite("List: ~p~n", [List]),
{ok, [A]} = io:fread("add sth to list: ", "~s"),
message ! {lista, [List]},
add_to_list(List, A).
add_to_list(List, What) ->
add_to_list(List ++ [What]).
msg() ->
receive
{lista, [List]} ->
io:fwrite("Otrzymalem ~p~n", [List]);
_ ->
ok
end,
msg().
A case of chce wsadzić do funkcji " add_to_list(List, What) "
miałem coś takiego w tej funkcji, ale przy uruchomieniu programu i wpisaniu czegoś, to się program wywala:
case What of
"q" -> exit(koniec)
end,
Dzięki za pomoc
Gdy dodam case of to wypluwa gdy np. wpisze 5 :
** exception error: no case clause matching "5"
in function training:add_to_list/2
zrobilem cos w stylu
case What of
"q" -> exit(true);
_ -> add_to_list(List ++ [What])
end.
i działa, ale jest brzydkie wyjście z programu bo wyrzuca:
** exception exit: true
in function training:add_to_list/2
Jak zrobić ładne zakończenie programu ?