官术网_书友最值得收藏!

Introduction

This chapter goes into the details of an artefact central to the Phobos standard library with a little core language support: ranges. Ranges are user-defined objects used to build iterators over a collection of items. The collection may be pre-existing, such as an array, or it may be generated on the fly by the range object.

Ranges are defined in a way that they can be plugged together like building blocks with generic algorithms and other transformations. Command-line pipelines and range code can be very similar.

The Unix command-line command cat file.txt | sort | uniq can be expressed similarly in D, using ranges from std.stdio and std.algorithm and a helper function from std.range, as shown in the following code:

foreach(line; File("file.txt").byLine.map!(a=>a.idup).array.sort.uniq)
    writeln("Unique line: ", line);

Each range feeds into the next, building a system of generic building blocks that can be combined to perform a variety of tasks. In this chapter, we'll look at how to use ranges and how to create our own.

主站蜘蛛池模板: 定结县| 平远县| 温宿县| 吉林省| 定南县| 满城县| 凤城市| 宜兰市| 东源县| 甘肃省| 鄢陵县| 庆安县| 建德市| 固始县| 宜州市| 星座| 淄博市| 鲁甸县| 宝丰县| 旌德县| 遂宁市| 新源县| 长汀县| 双峰县| 寻甸| 静安区| 江西省| 韩城市| 溧阳市| 德清县| 鹰潭市| 商丘市| 西乡县| 台南县| 喀什市| 望城县| 博兴县| 温州市| 桃园市| 宁乡县| 莎车县|