gpt4 book ai didi

julia - 如何评估 Julia 中的局部变量

转载 作者:行者123 更新时间:2023-12-04 03:11:48 25 4
gpt4 key购买 nike

i = 50
function test()
i = 10
eval(:i)
end
test() # => 50

为什么这会评估为全局 i而不是本地的?有没有办法让它评估到本地?

最佳答案

你不能。 Julia 的 eval始终评估当前模块范围的代码,而不是您的本地范围。调用eval在本地范围内是反模式和性能杀手。但是,您可以构造一个新函数,其中包含一些引用本地范围的用户代码,然后调用该函数。例如:

# user-supplied expression
expr = :(i^2 + 1)

# splice into function body
test = @eval function ()
i = 10
$expr
end

现在您可以调用 test :
julia> test()
101

为什么这比调用 eval 更好? test 内部就像问题一样?因为在原文中, eval每次调用 test都需要调用而在这种用法中, eval在定义 test 时只调用一次;当 test被称为否 eval已经完成了。因此,尽管您可以调用 eval “在运行时”在“当您的应用程序运行时,获取用户输入”的意义上它不是在调用使用该用户输入构造的函数的意义上的“在运行时”。前者很好,而后者显然是一种反模式。

关于julia - 如何评估 Julia 中的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21267962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com