我在“运行配置”中设置启动模块和功能有问题我这样做:“运行 - >运行配置”和“开始”部分我正在设置模块:mod,功能:你好
我的代码:
-module(mod).
-export([hello/0]).
hello()-> io:format("42").
现在,当我点击“运行”时,我希望 mod:hello() 自动执行,但它不起作用。我究竟做错了什么?
代码确实被执行了......
当你点击“运行”时,mod:hello()
会被执行。问题是,执行mod:hello()
是为了系统初始化,比如加载库代码和初始化循环状态。的副作用mod:hello()
,即作为标准输出的字符串“42”将不会反映在您的 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 shell 中:
$ erlc mod.erl
$ erl -noshell -s mod hello -s init stop
42
根据您要执行的内容,上面的答案还有另一种选择:“实时表达式”。在与控制台相同的位置有一个具有此名称的视图,您可以在其中输入表达式并在每次重新编译模块时启用它以进行评估。
这非常适用于评估不重且没有副作用的表达式,可以用作拥有测试套件的替代形式。