为什么 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?

你为什么不试试呢?