Erlang循環(while和for)

Erlang是一個函數式編程語言,是需要記住所有函數的編程語言,它們不提供任何的循環結構。而函數式編程取決於一個概念叫做遞歸。

while語句的實現


由於在 Erlang 中沒有可直接使用的 while 語句,就必須使用遞歸技術在 Erlang 中來實現 while 語句。

我們將努力遵循 while 循環的實現,如在其他編程語言中一樣。以下是遵守一個流程:
while循環實現

讓我們來看看如何使用遞歸來在 Erlang 中實現 while 循環的例子。

示例

-module(helloworld).
-export([while/1,while/2, start/0]).

while(L) -> while(L,0).
while([], Acc) -> Acc;
while([_|T], Acc) ->
io:fwrite("wn",[Acc]),
while(T,Acc+1).

start() ->
X = [1,2,3,4],
while(X).

以下是上述程序需要說明的一些關鍵點 -

  • 定義一個名爲 while 遞歸函數執行 while 循環;

  • 輸入列表的值在定義變量X到 while 功能作爲一個實例;

  • while 功能同時會取到每個列表中的值並存儲中間值到變量「‘Acc’」;

  • while循環遞歸調用列表中的每個值;

上面的代碼的輸出結果是 -

0
1
2
3

for語句

由於在 Erlang 沒有直接可用的 for 語句,人們必須使用 Erlang 遞歸技術實現 for 語句。

我們將實例一些代碼功能之後讓它能夠和其他編程語言一樣地執行 for 循環。以下是 for 語句實現的流程:
for循環

讓我們來看看如何在 Erlang 使用遞歸來實現 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 循環;

  • 我們使用的是 ‘for’ 函數以確保 N 或限制的值是正值;

  • 我們遞歸地調用 for 函數,通過在每一次遞歸後減少N的值。

上面的代碼的輸出結果是 -

Hello
Hello
Hello
Hello
Hello