Compiler construction Erlang代码替换

Compiler construction Erlang代码替换,compiler-construction,erlang,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.

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

-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重新加载模块而不杀死虚拟机?

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

> l(check).

这将重新加载新模块,您就可以开始了。

如果您在shell之外编译模块,您可以使用以下命令重新加载它:

> l(check).
如果要同时编译和重新加载,可以执行以下操作:

> c(check).