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).