前回は、ScriptEngineクラスかScriptクラスを使ったスクリプトの実行方法を説明しました。今回は、変数を外部からどのように引き渡すかを説明します。最初にEngineクラスを使った方法を以下にしめします。
ScriptEngine eng = ScriptDomainManager.CurrentManager.GetEngine("py"); sc = ScriptDomainManager.CurrentManager.CreateModule("__main__"); eng.SetVariable(sc, "a", 10); SourceUnit su = eng.CreateScriptSourceFromString("スクリプトコード"); eng.Execute(su, sc); object ret = eng.GetVariable(sc, "a);
Script.SetVariable("a", 10); Script.Execute("スクリプトコード", "py"); object ret = GetVariable("a");
ScriptEngineクラスを使用するよりも短いコードになっています。この理由は、スクリプトスコープが決め打ちで利用されるためです。このためスクリプトスコープを使った、スコープの分離を行うことができないのがScriptクラスの特徴になります。結果を返すスクリプトを実行する場合は、ExecuteメソッドではなくEvaluateメソッドを使用してください。
もしスクリプトスコープを使用するのであれば、スクリプトスコープのSetVariableメソッドとLookupVariableメソッドを使った方が良いかも知れません。
PingBack from http://geeklectures.info/2008/01/11/dlrdlr%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e3%83%9b%e3%82%b9%e3%83%86%e3%82%a3%e3%83%b3%e3%82%b02%e5%a4%89%e6%95%b0-2/
前回はIronPython 2.0 A8に含まれるDLRを使って、独自言語をホスティングするコンソールのみを作成しました。これから独自言語を定義していくのですが、その前にA6以前とA7以降のホスティングの変更点を説明します。
前回はIronPython 2.0 A8に含まれるDLRを使って、独自言語をホスティングするコンソールのみを作成しました。これから独自言語を定義していくのですが、その前にA6以前とA7以降のホスティングの変更点を説明します