为什么 Julia 中的 using Package 前面要加 @eval?
Why is `@eval` added in front of `using Package` in Julia?
我已经多次看到这种结构,例如 automatically loading Revise:
try
@eval using Revise
catch
这里为什么需要@eval
宏?如果我们不考虑它会怎样?
如果您想在函数范围内使用 using
,则需要这样做。
using
总是需要在全局范围内执行,而 eval 解决了这个问题,因为 eval 总是在全局范围内执行(这也是为什么不能使用 eval 创建局部变量的原因)。
What happens if we leave it out?
你为什么不试试呢?
我已经多次看到这种结构,例如 automatically loading Revise:
try
@eval using Revise
catch
这里为什么需要@eval
宏?如果我们不考虑它会怎样?
如果您想在函数范围内使用 using
,则需要这样做。
using
总是需要在全局范围内执行,而 eval 解决了这个问题,因为 eval 总是在全局范围内执行(这也是为什么不能使用 eval 创建局部变量的原因)。
What happens if we leave it out?
你为什么不试试呢?