Allow empty argument list methods.

- Compile them as calls and definitions.
- Use them for call(), clear(), run(), try(), and yield().
- Update the docs.
This commit is contained in:
Bob Nystrom
2015-02-26 23:08:36 -08:00
parent 1aaa8cff52
commit 96ceaa528b
94 changed files with 291 additions and 224 deletions
+6 -6
View File
@@ -76,17 +76,17 @@ so by calling a method on it:
:::dart
class Blondie {
callMe(fn) {
fn.call
fn.call()
}
}
Functions expose a `call` method that executes the body of the function. This
Functions expose a `call()` method that executes the body of the function. This
method is dynamically-dispatched like any other, so you can define your own
"function-like" classes and pass them to methods that expect "real" functions.
:::dart
class FakeFn {
call {
call() {
IO.print("I'm feeling functional!")
}
}
@@ -157,6 +157,6 @@ to`i`:
:::dart
var counter = Counter.create
IO.print(counter.call) // Prints "1".
IO.print(counter.call) // Prints "2".
IO.print(counter.call) // Prints "3".
IO.print(counter.call()) // Prints "1".
IO.print(counter.call()) // Prints "2".
IO.print(counter.call()) // Prints "3".