English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Erlang ループ文

Erlangは関数型プログラミング言語であり、関数型プログラミング言語はすべて、ループ構造を提供しません。代わりに、再帰という概念に依存します。

while文の実現

Erlangには直接的なwhile文がないため、while文の実現にはErlangで利用可能な再帰技術を使用する必要があります。

他のプログラミング言語と同じ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("~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

for文

Erlangには直接のfor文がないため、for文を実現するためにErlangの再帰技術を使用する必要があります。

他のプログラミング言語で従う同じ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ループ

  • 私たちは、Nの値または限界が正の値であることを確実にするために、'for'関数で保護措置を使用しています。

  • 私たちは、各再帰呼び出しでNの値を減らすことで、for関数を再帰的に呼び出します。

上記のコードの出力は以下の通りです:

出力

こんにちは
こんにちは
こんにちは
こんにちは
こんにちは