我创建了一个简单的模块:
-module(check).
-export([check/0]).
check() ->
Val = 1,
io:format("Value = ~p~n",[Val]).
使用erlc
编译的代码。现在让我们运行Erlang:
Erlang R14B (erts-5.8.1) [source] [smp:4:4] [rq:4] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.8.1 (abort with ^G)
1> check:check().
Value = 1
ok
如果我修改代码,将Val更改为2,并使用erlc
进行编译,我希望check:check
将返回2,但事实并非如此:
2> check:check().
Value = 1
ok
我们得到相同的结果。即使我重新启动shell。
如何在不杀死虚拟机的情况下强制Erlang重新加载模块?
答案 0 :(得分:8)
重新编译模块后,只需从shell运行:
> l(check).
这将重新加载新模块,您将准备好。
答案 1 :(得分:2)
如果您编译了shell的模块外部,可以使用以下命令重新加载:
> l(check).
如果你想编译和重新加载,你可以这样做:
> c(check).