On Wed, Jul 24, 2013 at 6:08 PM, Cedric Blancher <[email protected]> wrote: > On 24 July 2013 18:04, David Korn <[email protected]> wrote: >> cc: [email protected] >> Subject: Re: [ast-users] _ doesn't refer to the correct object. >> -------- >> >>> In this type, I can't think of any way to refer to "obj" from within >>> "x.get". >>> _ should point to "obj" in this context, not "obj.x". >>> >>> #!/usr/bin/env ksh >>> >>> typeset -T Type=( >>> typeset -h 'This will be a property.' x >>> integer -h 'This will be the backing field for x.' y=5 >>> >>> function x.get { >>> # Huge problem here because _ refers to x, >>> # we can't access anything. >>> ((.sh.value = ++_.y)) >>> } >>> ) >>> >>> Type obj >>> print -r "${obj.x}" "${obj.x}" # prints "1 2" >>> >>> The above should be equivalent to the follwing Python code: >>> >>> #!/usr/bin/env python3 >>> >>> class Type(object): >>> def __init__(self): >>> self.y = 5 >>> >>> @property >>> def x(self): >>> self.y += 1 >>> return self.y >>> >>> obj = Type() >>> print(obj.x, obj.x) # prints "6 7" >>> >>> >>> Or the following C# code: >>> >>> using System; >>> >>> namespace Program { >>> public class Type { >>> private int y = 5; >>> public string x { >>> get { >>> y++; >>> return this.y.ToString(); >>> } >>> } >>> } >>> >>> public class Program { >>> static int Main(string[] argv) { >>> var obj = new Type(); >>> Console.WriteLine("{0} {1}", obj.x, obj.x); // prints "6 7" >>> return 0; >>> } >>> } >>> } >>> >>> -- >>> Dan Douglas >> >> I think that python has this right. This should prnt 6 7. >> I will modify _ so that for types subvariables, it will reference the type. >> >> This way neither _._ or __ is needed. > > *protest*
Please move the discussion into a different mail thread. Otherwise this idea gets sunk by the other issue (a, a.x vs _) here. > > var.__ has a different use case. var.__ is to access the parent of a > variable in a variable tree, let it be a compound variable or nested > type variables. +1 I agree that var.__ is a novel idea which solves a lot of problems for languages which do not have something like C++ pointers. Irek _______________________________________________ ast-users mailing list [email protected] http://lists.research.att.com/mailman/listinfo/ast-users
