迭代器示例集合代码优化

This commit is contained in:
fantasticbin 2024-11-15 20:05:34 +08:00
parent a2ac2bf94e
commit ad8459af83

View File

@ -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
} }
} }