2015-02-10 87 views

回答

5

非常好的问题!

当我们在IEx中重新加载模块时,我们重新编译模块源代码,将其内容重新加载到内存中。磁盘中的原始.beam文件(可能是模块的第一个定义来自该文件的文件)完全不会改变。

由于typespecs和docs是从.beam文件加载的(它们没有在模块中加载到内存中,因为它们不需要在内存中),所以在重新加载模块时它们不会更新,因为内容在磁盘上仍然是一样的。 PS:我主要回答了r/1函数是如何工作的以及为什么你会看到这种行为。如果有兴趣,你可以阅读更多关于Erlang的热码交换,这也适用于Elixir:http://learnyousomeerlang.com/designing-a-concurrent-application#hot-code-loving

相关问题