English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Erlangは関数型プログラミング言語であり、関数型プログラミング言語はすべて、ループ構造を提供しません。代わりに、再帰という概念に依存します。
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
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関数を再帰的に呼び出します。
上記のコードの出力は以下の通りです:
こんにちは こんにちは こんにちは こんにちは こんにちは