[IronPython] CustomSymbolDictionary and conversions
Seshadri Pillailokam Vijayaraghavan
seshapv at microsoft.com
Fri Aug 22 09:24:39 PDT 2008
Hope these answer your questions...
>When accessing the baseScope from your example, isn't
>SymbolTable.IdToString(key) for each access to the baseScope slow?
>I wonder, why there is no ScriptScope.GetVariable(SymbolId) method.
The number of scenarios where a user would invoke any Hosting API in terms of SymbolId is very low. So it's much simpler not to provide an overload that takes in a SymbolID. Also, the static methods in the 'SymbolTable' class lets conversion to and from SymbolID quite simple and straightforward.
>What would be the approach to extend a ScriptScope by the properties of
>an object? Or in other words: How can I evaluate an expression in an
Any valid IronPython script snippet can be executed in the context of a scope. Since an expression is just another code snippet,you can the appropriate hosting API methods to achieve it. There are more than one ways to do it, the most typical being the one where you'd create a 'ScriptSource' object using the ScriptEngine.CreateScriptSource* methods and invoke the 'Execute' method on it and passing the relevant scope to it. (More information about various ways to execute a code snippet can be found at http://blogs.msdn.com/seshadripv/archive/2008/07/28/various-ways-to-execute-script-using-the-dlr-hosting-api.aspx)
Here's a typical execute call that executes a expression in a given scope.
ScriptScope scope = pythonEngine.CreateScope();
var src = eng.CreateScriptSourceFromString( "someVar1+someVar2",SourceCodeKind.Expression);
From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of Christian Schmidt
Sent: Thursday, August 21, 2008 3:48 PM
To: Discussion of IronPython
Subject: Re: [IronPython] CustomSymbolDictionary and conversions
thanks for your answer.
> The TryGetExtraValue and TrySetExtraValue methods can return a false
> for SymbolIDs that they don't maintain. Those values will be looked
> up in the actual scope.
I see, makes sense.
When accessing the baseScope from your example, isn't
SymbolTable.IdToString(key) for each access to the baseScope slow?
I wonder, why there is no ScriptScope.GetVariable(SymbolId) method.
What would be the approach to extend a ScriptScope by the properties of
an object? Or in other words: How can I evaluate an expression in an
Users mailing list
Users at lists.ironpython.com
More information about the Users