Unetway

Erlang - Циклы

Erlang - это функциональный язык программирования, и что нужно помнить о всех языках функционального программирования, так это то, что они не предлагают никаких конструкций для циклов. Вместо этого функциональное программирование зависит от концепции, называемой рекурсией.

WHILE

Поскольку в Erlang нет прямого предложения, нужно использовать методы рекурсии, доступные в Erlang, для выполнения реализации while. Мы попытаемся выполнить ту же реализацию цикла while, что и в других языках программирования. Ниже приводится общий поток, который будет соблюдаться.

-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 вызывается рекурсивно для каждого значения в списке.

FOR

Поскольку в Erlang нет прямого для утверждения, нужно использовать методы рекурсии, доступные в Erlang, для выполнения реализации for.Мы попытаемся выполнить ту же реализацию цикла for, что и в других языках программирования.

-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
  • Мы используем охранник в функции «для», чтобы гарантировать, что значение N или предел является положительным значением
  • Мы рекурсивно вызываем функцию for, уменьшая значение N при каждой рекурсии