1
0
forked from Mirror/wren

Remove outdated set example. Fix #266.

This commit is contained in:
Bob Nystrom
2015-05-20 07:07:47 -07:00
parent 16d5c4441c
commit a114f34a2a

View File

@ -1,110 +0,0 @@
class Set {
new {
_list = []
_clean = true
}
new (list) {
if (list is List) {
_list = list
_clean = false
cleanup
} // raise error?
}
cleanup {
// Removes duplicates in the underlying list.
if (!_clean) {
var newList = []
for (element in _list) {
if (!newList.contains(element)) newList.add(element)
}
_list = newList
_clean = true
}
}
add(element) {
_clean = false
_list.add(element)
}
remove(element) {
cleanup // Remove duplicates, so we can return early upon deletion.
for (i in 0.._list.count) {
if (_list[i] == element) {
_list.removeAt(i)
return
}
}
}
contains(element) {
return _list.contains(element)
}
count {
cleanup
return _list.count
}
iterate(i) {
cleanup
if (i == null) {
if (count > 0) return 0
return null
}
if (i < count || i >= count) return false
return i + 1
}
iteratorValue(i) {
cleanup
return _list[i]
}
map(f) {
return new Set(_list.map(f))
}
where(f) {
return new Set(_list.where(f))
}
|(that) {
// Union
return new Set(_list + that)
}
+(that) {
// A synonym for |
return this | that
}
&(that) {
// Intersection
return new Set(
_list.where { |element|
return that.contains(element)
} + that.where { |element|
return _list.contains(element)
})
}
-(that) {
// Set minus
return new Set(
_list.where { |element|
return !that.contains(element)
})
}
}
var a = "a"
var as = new Set([a, a, a])
var b = "b"
var bs = new Set([b, b, b])
IO.write((as | bs).contains(b))
IO.write((as & bs).contains(a))