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

В зависимости от того, что вы хотите выполнить, есть альтернатива ответу выше: "живые выражения". Существует представление с этим именем в том же месте, что и консоль, где вы можете вводить выражение и включать его для оценки при каждой перекомпиляции модуля.

Это хорошо работает для выражений, которые не являются тяжелыми для оценки и которые не имеют побочных эффектов, могут использоваться в качестве альтернативы наличию набора тестов.

Другие вопросы по тегам