「実行構成」で開始モジュールと関数を設定する際に問題があります。「実行 -> 実行構成」と「開始」セクションでモジュールを設定しています: mod、関数: こんにちは
私のコード:
-module(mod).
-export([hello/0]).
hello()-> io:format("42").
ここで、「実行」を押すと mod:hello() が自動的に実行されるようにしたいのですが、うまくいきません。私は何を間違っていますか?
コードは実行されます...
「実行」を押すと、mod:hello()
実行されます。の実行は、mod:hello()
ライブラリ コードのロードやループ状態の初期化など、システムの初期化を目的としています。stdout としての文字列「42」であるの副作用はmod:hello()
、Eclipse コンソールに反映されません。私の言いたいことを証明するために、ファイル システムにoutput_file.txt
. 次のように変更mod.erl
します。
-module(mod).
-export([hello/0]).
hello() ->
os:cmd("touch output_file.txt").
「実行」を押すとoutput_file.txt
、ディレクトリの下にファイルが作成されていることがわかりますworkspace
。これは の実行の証拠ですmod:hello()
。
やりたいことを実現するために...
Unix シェルの場合:
$ erlc mod.erl
$ erl -noshell -s mod hello -s init stop
42
実行したい内容に応じて、上記の答えに代わる方法があります: 「ライブ式」です。コンソールと同じ場所にこの名前のビューがあり、式を入力して、モジュールが再コンパイルされるたびに評価できるようにすることができます。
これは、評価が重くなく、副作用のない式でうまく機能し、テスト スイートの代替手段として使用できます。