2013-04-03 58 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'); 

我假设你有理由通过字符串表单。对于直接的对象操作,通常不是一个好主意。