49 lines
655 B
V
49 lines
655 B
V
struct Set<T> {
|
|
mut:
|
|
field []T
|
|
}
|
|
|
|
fn (mut s Set<T>) add<T>(value T) bool {
|
|
mut result := false
|
|
|
|
if value !in s.field {
|
|
s.field << value
|
|
result = true
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
fn (mut s Set<T>) remove<T>(value T) bool {
|
|
mut result := false
|
|
|
|
if value in s.field {
|
|
ndx := s.field.index(value)
|
|
s.field.delete(ndx)
|
|
result = true
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
fn test_generics_array_delete() {
|
|
mut set := Set<int>{}
|
|
|
|
mut added := set.add(4)
|
|
println(added)
|
|
assert added
|
|
|
|
added = set.add(3)
|
|
println(added)
|
|
assert added
|
|
|
|
added = set.add(3)
|
|
println(added)
|
|
assert !added
|
|
|
|
println(set)
|
|
mut removed := set.remove(4)
|
|
println(removed)
|
|
assert removed
|
|
}
|