2017-06-14 79 views
2

我有一些麻煩處理在引述表達在一個點索引的數組和一個項目在該點之間的差異引表達式和陣列可以看出這個簡單的例子:使用朱

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的indecies,所以我不能簡單地使用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。非常感謝您的幫助。

回答

2

您需要插所有的$(A[1]),而不是像現在對$A

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 
+0

謝謝申請[1]您發表評論。這個問題是,如果這是在一個循環中完成,'1'是一個變量,它將不可用:茱莉亞> eval(報價 我在1:2 @show $(A [i]) 結束 結束) 錯誤:UndefVarError:我沒有定義 –

+0

您可以更新您的示例以真正顯示問題嗎? –