在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C++/ D語(yǔ)言范圍
類(lèi)的訪問(wèn)修飾符
D語(yǔ)言運(yùn)算符
D語(yǔ)言邏輯運(yùn)算符
類(lèi)指針
D語(yǔ)言元組
D語(yǔ)言指針
D語(yǔ)言模塊
D語(yǔ)言sizeof運(yùn)算符
D語(yǔ)言混合類(lèi)型
D語(yǔ)言封裝
D語(yǔ)言條件編譯
類(lèi)的靜態(tài)成員
D語(yǔ)言do...while循環(huán)
D語(yǔ)言結(jié)構(gòu)體
重載
D語(yǔ)言字符串-String
D語(yǔ)言決策語(yǔ)句
D語(yǔ)言接口
D語(yǔ)言for循環(huán)
D語(yǔ)言switch語(yǔ)句
D語(yǔ)言關(guān)聯(lián)數(shù)組
D語(yǔ)言范圍
D語(yǔ)言枚舉Enums
契約式編程
D語(yǔ)言并發(fā)
D語(yǔ)言開(kāi)發(fā)環(huán)境設(shè)置
D語(yǔ)言別名
D語(yǔ)言常值
D語(yǔ)言常量
D語(yǔ)言函數(shù)
D語(yǔ)言if嵌套語(yǔ)句
D語(yǔ)言循環(huán)
D語(yǔ)言概述,D語(yǔ)言是什么?
D語(yǔ)言運(yùn)算符優(yōu)先級(jí)
D語(yǔ)言continue語(yǔ)句
D語(yǔ)言異常處理
D語(yǔ)言break語(yǔ)句
D語(yǔ)言if...else語(yǔ)句
D語(yǔ)言類(lèi)和對(duì)象
類(lèi)繼承
D語(yǔ)言字符
D語(yǔ)言教程
D語(yǔ)言關(guān)系運(yùn)算符
比較操作符重載
構(gòu)造函數(shù)和析構(gòu)函數(shù)
D語(yǔ)言抽象類(lèi)
D語(yǔ)言if語(yǔ)句
D語(yǔ)言賦值運(yùn)算符
D中算術(shù)運(yùn)算符
D語(yǔ)言類(lèi)成員函數(shù)
D語(yǔ)言位運(yùn)算符
D語(yǔ)言變量
D語(yǔ)言數(shù)據(jù)類(lèi)型
D語(yǔ)言文件I/O
D語(yǔ)言數(shù)組
一元運(yùn)算符重載
D語(yǔ)言嵌套switch語(yǔ)句
D語(yǔ)言基本語(yǔ)法
二元運(yùn)算符重載
this指針
D語(yǔ)言聯(lián)合體
D語(yǔ)言模板
D語(yǔ)言嵌套循環(huán)
D語(yǔ)言while循環(huán)

D語(yǔ)言范圍

范圍是存取元素的抽象。這種抽象使得在容器類(lèi)型的大量使用算法大量出現(xiàn)。范圍強(qiáng)調(diào)如何容器元素的訪問(wèn),而不是如何在容器中實(shí)現(xiàn)。范圍是一個(gè)是基于是否一個(gè)類(lèi)型定義某組的成員函數(shù)非常簡(jiǎn)單的概念。

D語(yǔ)言范圍片恰巧是最強(qiáng)大RandomAccessRange實(shí)現(xiàn)不可或缺的一部分,而且有很多的功能使用范圍。許多算法返回的臨時(shí)對(duì)象范圍。例如filter(),它選擇了大于10下面的代碼元素,實(shí)際上返回一個(gè)范圍對(duì)象,而不是一個(gè)數(shù)組:

數(shù)字范圍

數(shù)量范圍是相當(dāng)常用的這些數(shù)字范圍是int類(lèi)型。對(duì)于數(shù)量范圍的一些例子如下所示

// Example 1
foreach (value; 3..7) 
// Example 2
int[] slice = array[5..10]; 

福波斯范圍

關(guān)于結(jié)構(gòu)和類(lèi)接口的范圍是福波斯的范圍。 Phobos是正式運(yùn)行庫(kù)和標(biāo)準(zhǔn)庫(kù)自帶的D語(yǔ)言編譯器。

有多種類(lèi)型的范圍,其中包括,

  • InputRange

  • ForwardRange

  • BidirectionalRange

  • RandomAccessRange

  • OutputRange

InputRange

最簡(jiǎn)單的范圍的輸入范圍。在其他范圍帶來(lái)他們是基于一系列的頂部更高的需求。有三個(gè)函數(shù)InputRange需求,

  • empty: 指定的范圍內(nèi)是否為空;當(dāng)范圍被認(rèn)為是空的,它必須返回true,否則返回false

  • front: 提供對(duì)元素的范圍的開(kāi)始

  • popFront(): 通過(guò)去除所述第一元件從一開(kāi)始就縮短了范圍

import std.stdio;
import std.string;

struct Student
{
   string name;
   int number;
   string toString() const
   {
     return format("%s(%s)", name, number);
   }
}

struct School
{
   Student[] students;
}

struct StudentRange
{
   Student[] students;

   this(School school)
   {
     this.students = school.students;
   }

   @property bool empty() const
   {
     return students.length == 0;
   }

   @property ref Student front()
   {
     return students[0];
   }

   void popFront()
   {
     students = students[1 .. $];
   }
}

void main(){
   auto school = School( [ Student("Raj", 1), Student("John", 2) , Student("Ram", 3) ] );

   auto range = StudentRange(school);
   writeln(range);

   writeln(school.students.length);

   writeln(range.front);

   range.popFront;

   writeln(range.empty);
   writeln(range);
}

當(dāng)上面的代碼被編譯并執(zhí)行,它會(huì)產(chǎn)生以下結(jié)果:

[Raj(1), John(2), Ram(3)]
3
Raj(1)
false
[John(2), Ram(3)]

ForwardRange

ForwardRange還需要保存成員函數(shù)部分來(lái)自其他三個(gè)功能InputRange和返回時(shí)保存函數(shù)被調(diào)用的范圍內(nèi)的一個(gè)副本。

import std.array;
import std.stdio;
import std.string;
import std.range;

struct FibonacciSeries
{
   int first = 0;
   int second = 1;
   enum empty = false;   //  infinite range

   @property int front() const
   {
     return first;
   }

   void popFront()
   {
     int third = first + second;
     first = second;
     second = third;
   }

   @property FibonacciSeries save() const
   {
     return this;
   }
}

void report(T)(const dchar[] title, const ref T range)
{
   writefln("%s: %s", title, range.上一篇:D語(yǔ)言常量下一篇:D語(yǔ)言并發(fā)