微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

D语言前进范围

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.take(5)); 
} 

void main() { 
   auto range = FibonacciSeries(); 
   report(Original range, range);

   range.popFrontN(2); 
   report(After removing two elements, range); 

   auto thecopy = range.save; 
   report(The copy, thecopy);

   range.popFrontN(3); 
   report(After removing three more elements, range); 
   report(The copy, thecopy); 
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐