English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Erlang является функциональным языком программирования, и все функциональные языки программирования должны помнить, что они не предоставляют никаких конструкций циклов. Вместо этого функциональное программирование опирается на концепцию рекурсии.
Поскольку в Erlang нет прямого оператора while, поэтому для выполнения реализации оператора while необходимо использовать рекурсивные технологии, доступные в Erlang.
Мы попробуем следовать той же реализации цикла while, что и в других языках программирования. Вот общая схема, которую мы будем следовать.
Давайте посмотрим на пример того, как можно реализовать цикл while с помощью рекурсии в 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).
Обратите внимание на следующие моменты в приведенном выше программе,-
Определите рекурсивную функцию, называемую while, которая будет имитировать реализацию цикла while.
В качестве примера введите список значений, определенный в переменной X, в нашу функцию while.
Функция while получает каждое значение списка и хранит промежуточное значение в переменной «Acc».
Затем вызывается рекурсивный цикл while для каждого значения в списке.
Вывод кода будет -
0 1 2 3
Поскольку Erlang не имеет прямого оператора for, поэтому необходимо использовать рекурсивную технику Erlang для реализации оператора for.
Мы попробуем реализовать цикл for, следуя тому же принципу, что и в других языках программирования. Вот общий процесс, который нужно следовать.
Давайте рассмотрим пример реализации цикла for с использованием рекурсии в Erlang.
-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).
Обратите внимание на следующие моменты в приведенном выше программе,-
Мы определяем рекурсивную функцию, которая будет имитировать наше реализацияЦикл for.
Мы используем меры предосторожности в функции for, чтобы обеспечить, что значение N или предел является положительным.
Мы вызываем функцию for рекурсивно, уменьшая значение N в каждом вызове рекурсии.
Вывод приведенного выше кода будет:
Привет Привет Привет Привет Привет