Возможно ли, в Qt 4.8, со стороны C++ установить QScriptValue
-local значения в QScriptEngine
?Установка значений QScriptValue-local перед оценкой
Например, скажем, у меня есть:
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» global и установите + сбросить его соответствующим образом, но по причинам, которые отвлекают от этого вопроса, это не то, что я ищу. Я хотел бы:
- «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 в качестве действительного ответа.