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
+13 -13
View File
@@ -52,11 +52,11 @@ class Sequence {
}
}
isEmpty { iterate(null) ? false : true }
map(transformation) { new MapSequence(this, transformation) }
isEmpty { iterate(null) ? false : true }
where(predicate) { new WhereSequence(this, predicate) }
map(transformation) { MapSequence.new(this, transformation) }
where(predicate) { WhereSequence.new(this, predicate) }
reduce(acc, f) {
for (element in this) {
@@ -94,7 +94,7 @@ class Sequence {
}
toList {
var result = new List
var result = List.new()
for (element in this) {
result.add(element)
}
@@ -103,7 +103,7 @@ class Sequence {
}
class MapSequence is Sequence {
new(sequence, fn) {
this new(sequence, fn) {
_sequence = sequence
_fn = fn
}
@@ -113,7 +113,7 @@ class MapSequence is Sequence {
}
class WhereSequence is Sequence {
new(sequence, fn) {
this new(sequence, fn) {
_sequence = sequence
_fn = fn
}
@@ -129,11 +129,11 @@ class WhereSequence is Sequence {
}
class String is Sequence {
bytes { new StringByteSequence(this) }
bytes { StringByteSequence.new(this) }
}
class StringByteSequence is Sequence {
new(string) {
this new(string) {
_string = string
}
@@ -162,8 +162,8 @@ class List is Sequence {
}
class Map {
keys { new MapKeySequence(this) }
values { new MapValueSequence(this) }
keys { MapKeySequence.new(this) }
values { MapValueSequence.new(this) }
toString {
var first = true
@@ -180,7 +180,7 @@ class Map {
}
class MapKeySequence is Sequence {
new(map) {
this new(map) {
_map = map
}
@@ -189,7 +189,7 @@ class MapKeySequence is Sequence {
}
class MapValueSequence is Sequence {
new(map) {
this new(map) {
_map = map
}