Merge pull request #222 from bjorn/sequence_contains

Moved List.contains to Sequence.contains, added tests and docs
This commit is contained in:
Bob Nystrom
2015-03-18 07:54:55 -07:00
5 changed files with 51 additions and 18 deletions

View File

@ -1,4 +1,13 @@
class Sequence {
contains(element) {
for (item in this) {
if (element == item) {
return true
}
}
return false
}
count {
var result = 0
for (element in this) {
@ -92,15 +101,6 @@ class List is Sequence {
}
return result
}
contains(element) {
for (item in this) {
if (element == item) {
return true
}
}
return false
}
}
class Map {

View File

@ -30,6 +30,10 @@ Otherwise, returns `false`.
[1, 2, 3].any {|n| n < 1} // False.
[1, 2, 3].any {|n| n > 2} // True.
### **contains**(element)
Returns whether the sequence contains any element equal to the given element.
### **join**(sep)
Returns a string representation of the list. The string representations of the

View File

@ -45,6 +45,15 @@
// This string literal is generated automatically from core. Do not edit.
static const char* libSource =
"class Sequence {\n"
" contains(element) {\n"
" for (item in this) {\n"
" if (element == item) {\n"
" return true\n"
" }\n"
" }\n"
" return false\n"
" }\n"
"\n"
" count {\n"
" var result = 0\n"
" for (element in this) {\n"
@ -138,15 +147,6 @@ static const char* libSource =
" }\n"
" return result\n"
" }\n"
"\n"
" contains(element) {\n"
" for (item in this) {\n"
" if (element == item) {\n"
" return true\n"
" }\n"
" }\n"
" return false\n"
" }\n"
"}\n"
"\n"
"class Map {\n"

View File

@ -0,0 +1,6 @@
var list = [1, 2, 3, 4, "foo"]
IO.print(list.contains(2)) // expect: true
IO.print(list.contains(5)) // expect: false
IO.print(list.contains("foo")) // expect: true
IO.print(list.contains("bar")) // expect: false

View File

@ -0,0 +1,23 @@
// Ordered range.
IO.print((2..5).contains(1)) // expect: false
IO.print((2..5).contains(2)) // expect: true
IO.print((2..5).contains(5)) // expect: true
IO.print((2..5).contains(6)) // expect: false
// Backwards range.
IO.print((5..2).contains(1)) // expect: false
IO.print((5..2).contains(2)) // expect: true
IO.print((5..2).contains(5)) // expect: true
IO.print((5..2).contains(6)) // expect: false
// Exclusive ordered range.
IO.print((2...5).contains(1)) // expect: false
IO.print((2...5).contains(2)) // expect: true
IO.print((2...5).contains(5)) // expect: false
IO.print((2...5).contains(6)) // expect: false
// Exclusive backwards range.
IO.print((5...2).contains(1)) // expect: false
IO.print((5...2).contains(2)) // expect: false
IO.print((5...2).contains(5)) // expect: true
IO.print((5...2).contains(6)) // expect: false