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