D语言中的Range与C#中IEnumreable的区别

      基本的Range使用的接口函数有 front, popFront, empty三个函数,只要实现这三个函数,就是一个Range 。使用这三个函数来访问元素时代表着这是一个有序的集合,因此可以称Range为序列集,这是一个队列式的操作。

      而C#中的IEnumreable只要求能访问元素,并无有序要求,这与C#中的opApply接口相同。

      在D语言中有两种迭代方式,一种是实现 front, popFront ,empty这三个接口,另一种是实现opApply接口,只要实现其中一个就可以使用foreach进行迭代式访问。

      注意,仅仅实现opApply接口的对象是可以使用foreach来访问,而他并不是一个Range。

      在InputRange的接口中,则更加严格,需要同时实现以上两个接口才是一个InputRange。

      一个朋友告诉我,在Range中有一个isInputRange函数来检测是否为InputRange,这里面只检测front, popFront ,empty这三个接口,这么说只要实现这三个函数,就是一个InputRange,这样InputRange就是最基本的Range了。这与接口文件中描述的又不一样。~~~~~

原文地址:https://www.cnblogs.com/wanhongnan/p/5745115.html