0

なぜかメイプルコード

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

testproc();

生産する

abc_1

一方 (同じですが、abc が GLOBAL 変数になりました)

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

生成する (私が欲しいもの)

123

ローカル変数を含む連結文字列を評価するにはどうすればよいですか? 助けてくれてありがとう!:)

4

1 に答える 1

0

parse を使用すると、テキストが独自のファイルにあるか、最上位に入力されているかのように動作します。レキシカルにスコープされた変数のコンテキストはありません。

次のようなことができます

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

複数のローカルを処理する場合は、eval の 2 番目の引数にセットを使用します。

文字列形式を使用する理由があると思います。単純なオブジェクト操作の場合、通常は良い考えではありません。

于 2013-04-04T05:00:08.930 に答える