English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Erlang è un linguaggio di programmazione funzionale, e tutte le lingue di programmazione funzionale devono ricordare che non forniscono alcuna costruzione di ciclo. Al contrario, il programmazione funzionale si basa sul concetto di ricorsione.
Poiché il linguaggio Erlang non ha una diretta istruzione while, è necessario utilizzare la tecnica ricorsiva disponibile in Erlang per eseguire l'implementazione dell'istruzione while.
Cercheremo di seguire la stessa implementazione del ciclo while come in altri linguaggi di programmazione. Ecco il flusso generale da seguire.
Guardiamo un esempio di come implementare il ciclo while ricorsivamente in Erlang.
-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).
关于上述程序,需要注意以下要点-
Definire una funzione ricorsiva chiamata while che simula l'implementazione del ciclo while.
Come esempio, inserire la lista di valori definita nella variabile X nel nostro funzione while.
La funzione while ottiene ogni valore della lista e memorizza il valore intermedio nella variabile "Acc".
Poi chiamare ricorsivamente il ciclo while per ogni valore nella lista.
L'output del codice sopra sarà -
0 1 2 3
Poiché il linguaggio Erlang non ha una diretta istruzione for, è necessario utilizzare la tecnica ricorsiva di Erlang per implementare l'istruzione for.
我们将尝试按照其他编程语言所遵循的相同的 for 循环实现。以下是应遵循的一般流程。
让我们来看一个在 Erlang 使用递归实现 for 循环的实例。
-module(helloworld). -export([for/2,start/0]). for(0,_) -> []; for(N,Term) when N > 0 -> io:fwrite("Ciao~n"), [Term|for(N-1,Term)]. start() -> for(5,1).
关于上述程序,需要注意以下要点-
我们正在定义一个递归函数,该函数将模拟我们的实现for循环.
我们在“ for”函数中使用了保护措施,以确保N的值或极限为正值。
我们通过在每次递归中减小N的值来递归调用for函数。
上面的代码的输出将是:
Ciao Ciao Ciao Ciao Ciao