julia语言吧 关注:100贴子:93
  • 0回复贴,共1

一天一个jl小技巧:模块初始化

只看楼主收藏回复

jl和其他所有语言都不同的地方是,书写一个包的所有模块顶层的句子并不一定会执行。
jl包的模块在第一次加载时会解释运行,此时和python之类的语言没有差异。解释之后,将运行时整个序列化到缓存,这个过程被称为预编译。
在第二次及此后加载包时,如果源码毫无变化,所有模块从序列化结果读取。又由于有一些运行时结果无法被序列化或序列化结果可能出现问题(例如指针,可变容器),如果出现这种情况,第二次加载模块时程序出错甚至崩溃。


来自iPhone客户端1楼2022-07-09 21:04回复