Erlide: как настроить стартовый модуль в конфигурации запуска?
У меня проблема с настройкой модуля запуска и функции в "Запуск конфигурации" Я делаю это так: "Выполнить -> Выполнить настройку" и в разделе "Пуск" я устанавливаю Модуль: мод, функция: привет
мой код:
-module(mod).
-export([hello/0]).
hello()-> io:format("42").
Теперь, когда я нажимаю "Run", я бы хотел, чтобы mod:hello() выполнялся автоматически, но он не работает. Что я делаю неправильно?
2 ответа
Код действительно выполняется...
Когда вы нажмете "Run", mod:hello()
действительно выполняется. Дело в том, что исполнение mod:hello()
предназначен для инициализации системы, такой как загрузка кода библиотеки и инициализация циклических состояний. Побочный эффект mod:hello()
, которая является строкой "42", поскольку stdout не будет отражен в вашей консоли Eclipse. Чтобы доказать мою точку зрения, мы можем создать несколько более явных и более стойких побочных эффектов, таких как создание файла в файловой системе с именем output_file.txt
, + Изменить mod.erl
что-то вроде этого:
-module(mod).
-export([hello/0]).
hello() ->
os:cmd("touch output_file.txt").
Нажмите "Run", и вы найдете output_file.txt
файл создается под вашим workspace
каталог. Это доказательство казни mod:hello()
,
Чтобы добиться того, что вы хотите...
В оболочке Unix:
$ erlc mod.erl
$ erl -noshell -s mod hello -s init stop
42
В зависимости от того, что вы хотите выполнить, есть альтернатива ответу выше: "живые выражения". Существует представление с этим именем в том же месте, что и консоль, где вы можете вводить выражение и включать его для оценки при каждой перекомпиляции модуля.
Это хорошо работает для выражений, которые не являются тяжелыми для оценки и которые не имеют побочных эффектов, могут использоваться в качестве альтернативы наличию набора тестов.