Make constructors just methods.

* Eliminate "new" reserved word.
* Allow "this" before a method definition to define a constructor.
* Only create a default constructor for classes that don't define one.
This commit is contained in:
Bob Nystrom
2015-07-10 09:18:22 -07:00
parent 0ddaa2517c
commit 5fb6186d7d
221 changed files with 864 additions and 654 deletions
+5 -5
View File
@@ -61,7 +61,7 @@ but *don't* need to pass it to a method. For that, you can call the `Fn`
class's constructor:
:::dart
var someFn = new Fn {
var someFn = Fn.new {
IO.print("Hi!")
}
@@ -91,7 +91,7 @@ method is dynamically-dispatched like any other, so you can define your own
}
}
blondie.callMe(new FakeFn)
blondie.callMe(FakeFn.new())
## Function parameters
@@ -130,9 +130,9 @@ value using a `return` statement. In other words, these two functions do the
same thing:
:::dart
new Fn { "return value" }
Fn.new { "return value" }
new Fn {
Fn.new {
return "return value"
}
@@ -146,7 +146,7 @@ leaving the scope where the function is defined:
class Counter {
static create {
var i = 0
return new Fn { i = i + 1 }
return Fn.new { i = i + 1 }
}
}