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.
David Korn
[email protected]
_______________________________________________
ast-users mailing list
[email protected]
http://lists.research.att.com/mailman/listinfo/ast-users