Make Sequence base class.
This lets us share functionality between List and Range (and other user-defined sequence types).
This commit is contained in:
+21
-17
@@ -1,4 +1,22 @@
|
||||
class List {
|
||||
class Sequence {
|
||||
map (f) {
|
||||
var result = []
|
||||
for (element in this) {
|
||||
result.add(f.call(element))
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
where (f) {
|
||||
var result = []
|
||||
for (element in this) {
|
||||
if (f.call(element)) result.add(element)
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
class List is Sequence {
|
||||
toString {
|
||||
var result = "["
|
||||
for (i in 0...count) {
|
||||
@@ -16,20 +34,6 @@ class List {
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
map (f) {
|
||||
var result = []
|
||||
for (element in this) {
|
||||
result.add(f.call(element))
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
where (f) {
|
||||
var result = []
|
||||
for (element in this) {
|
||||
if (f.call(element)) result.add(element)
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
class Range is Sequence {}
|
||||
|
||||
Reference in New Issue
Block a user