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

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.

主站蜘蛛池模板: 文登市| 桐梓县| 文昌市| 连州市| 云浮市| 龙海市| 二手房| 白玉县| 卢龙县| 什邡市| 临澧县| 信丰县| 鄂托克前旗| 肥东县| 游戏| 兰州市| 梧州市| 凤城市| 天峨县| 通海县| 黑山县| 长治市| 漳州市| 赞皇县| 正阳县| 长顺县| 龙山县| 淳安县| 巫山县| 巴楚县| 洛浦县| 河北区| 班戈县| 清涧县| 郴州市| 蒙城县| 焦作市| 万安县| 韶山市| 仁化县| 新安县|