Merge branch 'list-forall' of git://github.com/gsmaverick/wren into gsmaverick-list-forall

This commit is contained in:
Bob Nystrom
2015-01-15 06:52:43 -08:00
6 changed files with 29 additions and 0 deletions

View File

@ -14,6 +14,13 @@ class Sequence {
}
return result
}
all(f) {
for (element in this) {
if (!f.call(element)) return false
}
return true
}
}
class List is Sequence {

View File

@ -313,6 +313,10 @@ Removes all items from the list.
The number of items in the list.
### **forall(predicate)**
Tests whether all the elements in the list pass the `predicate`.
### **insert**(item, index)
**TODO**

View File

@ -57,6 +57,13 @@ static const char* libSource =
" }\n"
" return result\n"
" }\n"
"\n"
" all(f) {\n"
" for (element in this) {\n"
" if (!f.call(element)) return false\n"
" }\n"
" return true\n"
" }\n"
"}\n"
"\n"
"class List is Sequence {\n"

9
test/list/forall.wren Normal file
View File

@ -0,0 +1,9 @@
var a = [1, 2, 3]
var b = a.all {|x| x > 1 }
IO.print(b) // expect: false
var d = a.all {|x| x > 0 }
IO.print(d) // expect: true
var e = [].all {|x| false }
IO.print(e) // expect: true

View File

@ -0,0 +1 @@
[1, 2, 3].all {|x| "string" } // expect runtime error: String does not implement method '!' with 0 arguments.

View File

@ -0,0 +1 @@
[1, 2, 3].all("string") // expect runtime error: String does not implement method 'call' with 1 argument.