Qt 4.8, C++ 측에서 의 국부 값을 QScriptValue
으로 설정할 수 있습니까? 그 출력이 될평가하기 전에 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을 유효한 대답으로 받아 들일 것입니다.