stream

package module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 9, 2019 License: MIT Imports: 1 Imported by: 1

Documentation

Overview

实现了一种惰性列表数据结构:流。

该结构中的数据是不可修改的,并且会对已经计算的数据进行缓存,不会重复计算。 由于采用了惰性计算,因此该结构中的数据个数可以是无限的。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Stream

type Stream struct {
	// contains filtered or unexported fields
}

流结构

func Concat added in v1.0.1

func Concat(s *Stream, ss ...*Stream) *Stream

将指定的流链接起来,返回相应的流。

func Cons added in v1.0.1

func Cons(x interface{}, s *Stream) *Stream

将数据x添加到流s的前面,并返回相应的流。

func Make

func Make(xs ...interface{}) *Stream

通过不定参数创建流。

func New

func New(head interface{}, tailf func() *Stream) *Stream

创建一个流。

head为其头部,tailf是一个返回其尾部的函数。

func Repeat

func Repeat(x interface{}) *Stream

返回一个所有数据都是x的无限流。

func Sequence

func Sequence(x, s int) *Stream

返回一个从x开始,步长为s的等差数列。

func Zip added in v1.0.1

func Zip(ss ...*Stream) *Stream

将指定的流中相同位置的数据,组合成一个切片数据,并返回相应的流。 返回的流的长度为其中最短流的长度。

func (*Stream) All

func (self *Stream) All(f interface{}) bool

遍历所有的数据,并将其作为参数调用函数f, 只要有一次调用返回false,则该方法返回false,否则返回true。

提示:不要在一个无限流上调用此方法。

func (*Stream) Any

func (self *Stream) Any(f interface{}) bool

遍历所有的数据,并将其作为参数调用函数f, 只要有一次调用返回true,则该方法返回true,否则返回false。

提示:不要在一个无限流上调用此方法。

func (*Stream) Count added in v1.0.1

func (self *Stream) Count() int

返回数据个数。

提示:不要在一个无限流上调用此方法。

func (*Stream) Cut

func (self *Stream) Cut(x interface{}) *Stream

如果x是整数,返回丢弃尾部x个数据的流。 如果x是函数,通过x判断数据,丢弃尾部的数据直到x返回false,返回相应的流。 其他情况抛出异常。

提示:该方法不是完全惰性计算的,极端的情况:所有的数据都该被丢弃。

func (*Stream) Drop

func (self *Stream) Drop(x interface{}) *Stream

如果x是整数,返回丢弃头部x个数据的流。 如果x是函数,通过x判断数据,丢弃头部的数据直到x返回false,返回相应的流。 其他情况抛出异常。

提示:该方法不是完全惰性计算的,极端的情况:所有的数据都该被丢弃。

func (*Stream) Each added in v1.0.1

func (self *Stream) Each(f interface{}) *Stream

遍历所有的数据,并将其作为参数调用函数f,并返回流本身。

提示:不要在一个无限流上调用此方法。

func (*Stream) Filter

func (self *Stream) Filter(f interface{}) *Stream

将流中的数据通过函数f进行筛选,剔除返回值为false的数据,返回筛选后的流。

提示:该方法不是完全惰性计算的,极端的情况:所有的数据都不满足筛选条件。

func (*Stream) Fold

func (self *Stream) Fold(a interface{}, f interface{}) interface{}

将流中的数据通过函数f进行叠加,返回叠加后的结果。 a为初始叠加值,函数f的第1个参数为叠加值,第2个参数为流中的数据。

提示:不要在一个无限流上调用此方法。

func (*Stream) Force

func (self *Stream) Force() *Stream

强制计算,并返回流本身。 该方法主要是用于摆脱对上下文环境的依赖。

提示:不要在一个无限流上调用此方法。

func (*Stream) Head

func (self *Stream) Head() interface{}

返回头部。

func (*Stream) Map added in v1.0.1

func (self *Stream) Map(f interface{}) *Stream

将流中的数据通过函数f进行映射,返回映射后的流。

提示:该方法是惰性计算的,因此可以处理无限流。

func (*Stream) Tail

func (self *Stream) Tail() *Stream

返回尾部。

func (*Stream) Take

func (self *Stream) Take(x interface{}) *Stream

如果x是整数,返回包含前x个数据的流。 如果x是函数,通过x判断数据,包含数据直到x返回false,返回相应的流。 其他情况抛出异常。

提示:该方法是惰性计算的,因此可以处理无限流。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL