Fields in closures.

This commit is contained in:
Bob Nystrom
2013-12-23 11:17:40 -08:00
parent c0169896e6
commit 9235a7e38f
7 changed files with 128 additions and 23 deletions
+16
View File
@@ -0,0 +1,16 @@
class Foo {
new { _field = "Foo field" }
closeOverGet {
return fn { return _field }
}
closeOverSet {
return fn { _field = "new value" }
}
}
var foo = new Foo
IO.write(foo.closeOverGet.call) // expect: Foo field
foo.closeOverSet.call
IO.write(foo.closeOverGet.call) // expect: new value
+1 -4
View File
@@ -6,6 +6,7 @@ class Foo {
_d = d
_e = e
}
write {
IO.write(_a)
IO.write(_b)
@@ -23,7 +24,3 @@ foo.write
// expect: 3
// expect: 4
// expect: 5
// TODO: Trying to get or set a field outside of a class.
// TODO: Fields in nested classes.
// TODO: Closing over fields.
+18
View File
@@ -0,0 +1,18 @@
class Outer {
method {
_field = "outer"
IO.write(_field) // expect: outer
class Inner {
method {
_field = "inner"
IO.write(_field) // expect: inner
}
}
(new Inner).method
IO.write(_field) // expect: outer
}
}
(new Outer).method