热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

当我们重新加载Elixir模块时会发生什么?

如何解决《当我们重新加载Elixir模块时会发生什么?》经验,为你挑选了1个好方法。

我正在向我的Elixir库中添加规范信息,但我注意到当我在另一个IEx会话中重新加载库时,它没有选择我正在添加的'@spec'更改.我的问题是,当我们这样做的时候

r(Module) 

在IEx中究竟要重新加载什么?



1> José Valim..:

非常好的问题!

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

由于从.beam文件加载了typespecs和docs(它们没有在模块的内存中加载,因为它们不需要在内存中),因此当你重新加载模块时它们不会更新,因为磁盘中的内容仍然是相同.

PS:我已经回答了r/1函数的工作原理以及你看到这种行为的原因.如果有兴趣,你可以在Erlang中阅读更多关于热代码交换的内容,这也适用于Elixir:http://learnyousomeerlang.com/designing-a-concurrent-application#hot-code-loving


推荐阅读
author-avatar
无心之无心
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有