迭代器示例集合代码优化
This commit is contained in:
parent
a2ac2bf94e
commit
ad8459af83
@ -88,11 +88,7 @@ func (s *OrderedSet[T]) All() iter.Seq[T] {
|
|||||||
func (s Set[T]) FilterMap(fn func(T) bool) iter.Seq[T] {
|
func (s Set[T]) FilterMap(fn func(T) bool) iter.Seq[T] {
|
||||||
return func(yield func(T) bool) {
|
return func(yield func(T) bool) {
|
||||||
for v := range s.m {
|
for v := range s.m {
|
||||||
if !fn(v) {
|
if fn(v) && !yield(v) {
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if !yield(v) {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -104,11 +100,7 @@ func (s *OrderedSet[T]) FilterMap(fn func(T) bool) iter.Seq[T] {
|
|||||||
return func(yield func(T) bool) {
|
return func(yield func(T) bool) {
|
||||||
// 迭代有序切片
|
// 迭代有序切片
|
||||||
for v := range slices.Values(s.ordered) {
|
for v := range slices.Values(s.ordered) {
|
||||||
if !fn(v) {
|
if fn(v) && !yield(v) {
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if !yield(v) {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user