我在处理在某个位置索引的数组与引用表达式中该位置的项目之间的差异时遇到了一些麻烦,可以通过这个简单的示例看出:
julia> A=[:(2+3),:(4),:(9-8)];
julia> t=A[1];
julia> eval(quote
@show isequal($A[1],$t)
@show $A[1]
@show $t
end)
isequal((Any[:(2 + 3),4,:(9 - 8)])[1],2 + 3) = false
(Any[:(2 + 3),4,:(9 - 8)])[1] = :(2 + 3)
2 + 3 = 5
5
我需要以编程方式访问 A
的不确定性,因此我不能简单地将 t
用于我的应用程序。所以,这样的事情是行不通的:
julia> A=[:(2+3),:(4),:(9-8)];
julia> eval(quote
for i in 1:2
@show $(A[i])
end
end)
ERROR: UndefVarError: i not defined
但是,为了让我的应用程序正常工作,这是详细的 here我需要一些东西(可能是一个临时变量,我尝试失败......)等于t
。另外,不幸的是我不能只使用eval
。非常感谢您的帮助。
最佳答案
您需要对所有 $(A[1])
进行插值,而不是像现在在 $A
上应用 [1]
eval(quote
@show isequal($(A[1]),$t)
@show $(A[1])
@show $t
end)
isequal(2 + 3, 2 + 3) = true
2 + 3 = 5
2 + 3 = 5
5
关于julia - 在 Julia 中使用带引号的表达式和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44538634/