Qt 4.8 で、C++ 側からQScriptValue
-local 値を aに設定することは可能QScriptEngine
ですか?
たとえば、私が持っているとしましょう:
QScriptEngine engine;
engine.globalObject().setProperty("glob", 1000);
// ???: Set loc to, say, 42.
QScriptValue expr1 = engine.evaluate("glob + loc");
qDebug() << expr1.toNumber();
// ???: Set loc to, say, 99.
QScriptValue expr2 = engine.evaluate("glob + loc");
qDebug() << expr2.toNumber();
そして、その出力を次のようにしたいと思います。
1042
1099
上記の人為的な例に対する明白な解決策は、「loc」をグローバルにして、それに応じて設定 + リセットすることですが、この質問から気をそらす理由から、それは私が探しているものではありません。私は…したい:
- 「loc」はそれぞれにローカルです
QScriptValue
- スクリプトの前に追加するなどして、スクリプト文字列を人為的に変更しない
QString().sprintf("loc = %d;", 42)
ようにします。 - 単一の
QScriptEngine
.
私が実際に試してみることができた唯一のことは次のとおりです。
QScriptValue expr1 = engine.evaluate("glob + loc");
expr1.setProperty("loc", 42);
qDebug() << expr1.toNumber();
しかし、値はすでに によって完全に評価されevaluate()
ているようでsetProperty()
、効果はありません (驚くことではありません)。
私はまた、QScriptProgram
それがプログラムローカル環境を提供することを望んでいましたが、悲しいかな。
私はドキュメントを見ており、これを投稿した後もそれらを見続けますが、これを使用するのはこれが初めてでありQScriptEngine
、私の脳がどろどろになっていることを認めなければならないので、それが正しいかどうか、完全に謝罪します明らか。RTFM を有効な回答として受け入れます。