Make Sequence base class.

This lets us share functionality between List and Range (and
other user-defined sequence types).
This commit is contained in:
Bob Nystrom
2014-02-16 09:20:31 -08:00
parent 4d8bf4bc8e
commit f8a9d7f321
8 changed files with 68 additions and 53 deletions

View File

@ -1,5 +1,3 @@
var a = [1, 2, 3]
var inc = fn (x) { return x + 1 }
var b = a.map(inc)
var b = a.map(fn (x) x + 1)
IO.print(b) // expect: [2, 3, 4]

View File

@ -1,4 +1,5 @@
IO.print([] is List) // expect: true
IO.print([] is Sequence) // expect: true
IO.print([] is Object) // expect: true
IO.print([] is Bool) // expect: false
IO.print([].type == List) // expect: true

View File

@ -1,8 +1,6 @@
var a = [1, 2, 3]
var moreThan1 = fn (x) { return x > 1 }
var moreThan10 = fn (x) { return x > 10 }
var b = a.where(moreThan1)
var c = a.where(moreThan10)
var b = a.where(fn (x) x > 1)
IO.print(b) // expect: [2, 3]
var c = a.where(fn (x) x > 10)
IO.print(c) // expect: []

3
test/range/map.wren Normal file
View File

@ -0,0 +1,3 @@
var a = 1..3
var b = a.map(fn (x) x + 1)
IO.print(b) // expect: [2, 3, 4]

View File

@ -1,6 +1,7 @@
var range = 2..5
IO.print(range is Range) // expect: true
IO.print(range is Sequence) // expect: true
IO.print(range is Object) // expect: true
IO.print(range is String) // expect: false
IO.print(range.type == Range) // expect: true

6
test/range/where.wren Normal file
View File

@ -0,0 +1,6 @@
var a = 1..3
var b = a.where(fn (x) x > 1)
IO.print(b) // expect: [2, 3]
var c = a.where(fn (x) x > 10)
IO.print(c) // expect: []