Erlang代码替换

时间:2011-06-24 19:01:44

标签: compiler-construction erlang

我创建了一个简单的模块:

-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重新加载模块?

2 个答案:

答案 0 :(得分:8)

重新编译模块后,只需从shell运行:

> l(check).

这将重新加载新模块,您将准备好。

答案 1 :(得分:2)

如果您编译了shell的模块外部,可以使用以下命令重新加载:

> l(check).

如果你想编译和重新加载,你可以这样做:

> c(check).