C#函数式编程之序列(2)

public bool Contains(T value)
            {
                return compare(value, start) >= 0 && compare(end, value) >= 0;
            }
        }

通过上面的代码我们可以看到Range的功能远远比Sequence函数要强大的多,并且我们可以看到我们还提供了Contains方法用来判断指定的值是否在值域中,另外我们还可以获得IEnumerable借口的各种扩展方法供我们使用。

限制

有时我们的迭代器的实现可能很复杂,如果还要加上限制不仅仅会影响到其性能,同时还会导致代码的可读性较差,所以我们可以将这两者进行分离,负责生成序列的函数只需要没有任何限制,而将限制移转到外部,比如函数TFunc是一个返回序列的函数,并且没有限制,而CFunc则接受一个最大值,以及用来计算序列的函数,并且返回负责条件的序列,那么我们就可以像如下这样循环获取值:

foreach(int x in CFunc(10,TFunc)){

Console.WriteLine(x);

}

至此关于函数式编程中的序列就结束了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/90801de30f7c9ff38fba62ccc7a1bba3.html