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
@@ -4,7 +4,7 @@
A first class function—an object that wraps an executable chunk of code.
[Here](../functions.html) is a friendly introduction.
### new **Fn**(function)
### Fn.**new**(function)
Creates a new function from... `function`. Of course, `function` is already a
function, so this really just returns the argument. It exists mainly to let you
@@ -12,7 +12,7 @@ create a "bare" function when you don't want to immediately pass it as a [block
argument](../functions.html#block-arguments) to some other method.
:::dart
var fn = new Fn {
var fn = Fn.new {
IO.print("The body")
}
@@ -25,15 +25,15 @@ It is a runtime error if `function` is not a function.
The number of arguments the function requires.
:::dart
IO.print(new Fn {}.arity) // 0.
IO.print(new Fn {|a, b, c| a }.arity) // 3.
IO.print(Fn.new {}.arity) // 0.
IO.print(Fn.new {|a, b, c| a }.arity) // 3.
### **call**(args...)
Invokes the function with the given arguments.
:::dart
var fn = new Fn { |arg|
var fn = Fn.new { |arg|
IO.print(arg)
}