Erlang代码替换

Ant*_*iev 3 compiler-construction erlang

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

-module(check). 
-export([check/0]). 
check() ->
    Val = 1,
    io:format("Value = ~p~n",[Val]).
Run Code Online (Sandbox Code Playgroud)

编译的代码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
Run Code Online (Sandbox Code Playgroud)

如果我修改代码,将Val更改为2,并使用erlc,我希望check:check将返回2,但事实并非如此:

2> check:check().
Value = 1
ok
Run Code Online (Sandbox Code Playgroud)

我们得到相同的结果.即使我重新启动shell.

如何在不杀死虚拟机的情况下强制Erlang重新加载模块?

Rob*_*loi 8

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

> l(check).
Run Code Online (Sandbox Code Playgroud)

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