Erlang - pętle
Erlang jest funkcjonalnym językiem programowania i należy pamiętać o wszystkich funkcyjnych językach programowania, ponieważ nie oferują one żadnych konstrukcji dla pętli. Zamiast tego programowanie funkcjonalne opiera się na koncepcji zwanej rekursją.
while Implementacja instrukcji
Ponieważ w Erlangu nie jest dostępna bezpośrednia instrukcja while, do wykonania instrukcji while należy użyć technik rekurencyjnych dostępnych w Erlangu.
Postaramy się zastosować tę samą implementację pętli while, jaka jest stosowana w innych językach programowania. Poniżej przedstawiono ogólny schemat, który będzie przestrzegany.
Spójrzmy na przykład, jak możemy użyć rekurencji do zaimplementowania while pętla w Erlang.
Przykład
-module(helloworld).
-export([while/1,while/2, start/0]).
while(L) -> while(L,0).
while([], Acc) -> Acc;
while([_|T], Acc) ->
io:fwrite("~w~n",[Acc]),
while(T,Acc+1).
start() ->
X = [1,2,3,4],
while(X).
Na temat powyższego programu należy zwrócić uwagę na następujące kluczowe punkty:
Zdefiniuj funkcję rekurencyjną o nazwie while, która symulowałaby implementację naszej pętli while.
Jako przykład wprowadź listę wartości zdefiniowanych w zmiennej X do naszej funkcji while.
Funkcja while przyjmuje każdą wartość z listy i przechowuje wartość pośrednią w zmiennej „Acc”.
Pętla while jest następnie wywoływana rekurencyjnie dla każdej wartości z listy.
Wynik powyższego kodu będzie -
Wynik
0
1
2
3
dla instrukcji
Ponieważ nie ma bezpośredniego for instrukcji dostępnej w Erlangu, należy użyć technik rekurencyjnych dostępnych w Erlangu, aby wykonać for implementacja instrukcji.
Postaramy się postępować zgodnie z tą samą implementacją forpętla, jak jest przestrzegana w innych językach programowania. Poniżej przedstawiono ogólny schemat, którego należy przestrzegać.
Spójrzmy na przykład, jak możemy użyć rekurencji do zaimplementowania for pętla w Erlang.
Przykład
-module(helloworld).
-export([for/2,start/0]).
for(0,_) ->
[];
for(N,Term) when N > 0 ->
io:fwrite("Hello~n"),
[Term|for(N-1,Term)].
start() ->
for(5,1).
Na temat powyższego programu należy zwrócić uwagę na następujące kluczowe punkty:
Definiujemy funkcję rekurencyjną, która symulowałaby implementację naszego for loop.
Używamy osłony w funkcji „for”, aby zapewnić, że wartość N lub limit jest wartością dodatnią.
Rekurencyjnie wywołujemy funkcję for, zmniejszając wartość N przy każdej rekursji.
Wynik powyższego kodu będzie -
Wynik
Hello
Hello
Hello
Hello
Hello