To 'with' or not to 'with': how is the question ?
Niki Spahiev
spahievi at vega.bg
Sat Sep 2 15:51:02 EDT 2000
Saturday, September 02, 2000, 12:26:17 AM, Jason Cunliffe wrote:
[..]
JC> The with action is useful for accessing multiple items in a scope chain list
JC> simultaneously. In the following example, the built-in Math object is placed
JC> at the front of the scope chain. Setting Math as a default object resolves
JC> the identifiers cos, sin, and PI to Math.cos, Math.sin, and Math.PI,
JC> respectively. The identifiers a, x, y, and r are not methods or properties
JC> of the Math object, but since they exist in the object activation scope of
JC> the function polar, they resolve to the corresponding local variables.
JC> function polar(r){
JC> var a, x, y
JC> with (Math) {
JC> a = PI * r * r
JC> x = r * cos(PI)
JC> y = r * sin(PI/2)
JC> }
JC> trace("area = " +a)
JC> trace("x = " + x)
JC> trace("y = " + y)
JC> }
JC> You can use nested with actions to access information in multiple scopes. In
JC> the following example, the instance fresno and the instance salinas are
JC> children of the instance california. The statement sets the _alpha values of
JC> fresno and salinas without changing the _alpha value of california.
JC> with (california){
JC> with (fresno){
JC> _alpha = 20;
JC> }
JC> with (salinas){
JC> _alpha = 40;
JC> }
JC> }
AFAIK ZOPE does that with it's MultiMap extension class. So if we use
MultiMaps intead of dicts as namespace, we will get such behaviour.
--
Best regards,
Niki Spahiev
More information about the Python-list
mailing list