2015-02-10 198 views

回答

5

非常好的問題!

當我們在IEx中重新加載模塊時,我們重新編譯模塊源代碼,將其內容重新加載到內存中。磁盤中的原始.beam文件(可能是模塊的第一個定義來自該文件的文件)完全不會改變。

由於typespecs和docs是從.beam文件加載的(它們沒有在模塊中加載到內存中,因爲它們不需要在內存中),所以在重新加載模塊時它們不會更新,因爲內容在磁盤上仍然是一樣的。 PS:我主要回答了r/1函數是如何工作的以及爲什麼你會看到這種行爲。如果有興趣,你可以閱讀更多關於Erlang的熱碼交換,這也適用於Elixir:http://learnyousomeerlang.com/designing-a-concurrent-application#hot-code-loving

相關問題