julia - 在 Julia 中使用带引号的表达式和数组

标签 julia julia-jump

我在处理在某个位置索引的数组与引用表达式中该位置的项目之间的差异时遇到了一些麻烦,可以通过这个简单的示例看出:

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/

相关文章:

julia - 如何在我的 Julia 文档中包含来自另一个包的函数的文档字符串?

parallel-processing - Julia Parallel 宏似乎不起作用

dataframe - 如何使用 ifelse 条件数据框在 Julia 中创建新变量?

mathematical-optimization - 尽管数学上不可能,但 Gurobi 报告了无限模型

julia - 列出 JuMP 中可用的求解器

julia - 在 julia 中打开 csv 文件时出现无效的转义序列

python - 需要将函数迭代从 Python 转换为 Julia

julia - 如何在 Julia JuMP 中使用 VariableRef 作为索引

julia - 如何传递 JuMP 支持的 SymPy 表达式

julia - 仅对小于 N 的元素求和