2013-04-03 60 views
0

局部變量的估值問題,由於某些原因,華普代碼全球VS楓樹

testproc := proc() 
    LOCAL abc; 
    abc[1] := 123; 
    print(eval(parse(cat("abc[", 1, "]")))) 
end proc 

testproc(); 

產生

abc_1 

而(相同,但與ABC現在一個全局變量)

testproc := proc() 
    GLOBAL abc; 
    abc[1] := 123; 
    print(eval(parse(cat("abc[", 1, "]")))) 
end proc 

生產(我想要的)

123 

我該怎麼做才能評估包含局部變量的連接字符串?非常感謝您的幫助! :)

+0

這是什麼語言? – jsedano 2013-04-03 23:15:51

+0

這是楓(16)。 – user2242610 2013-04-03 23:25:10

+0

沒錯;連接產生一個全局名稱。很可能你正在問如何實施一種可疑的方法......可能以另一種方式做得更好。你爲什麼想這樣做?這不只是索引名稱,對吧?你有沒有明確宣佈所有這些可能的當地人?多少?爲什麼他們需要通過後續的串聯來形成?爲什麼不發佈你實際想要完成的更好的代表。這種方式似乎被誤導了。 – acer 2013-04-04 04:57:39

回答

0

當您使用分析時,它的操作就好像文本是在其自己的文件中或輸入在頂層。它沒有詞彙範圍變量的上下文。

如果要處理多個本地人,使用一組的第二個參數EVAL你可以做類似

eval(parse(cat("abc[",1,"]")),convert('abc',`global`)='abc'); 

我假設你有理由通過字符串表單。對於直接的對象操作,通常不是一個好主意。