Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101400
  • 博文数量: 17
  • 博客积分: 42
  • 博客等级: 上尉
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-24 01:27
文章分类
文章存档

2011年(1)

2010年(16)

分类:

2010-03-30 21:42:52

public static class IteratorExtensions{
public static IEnumerable 
   MakeCustomIterator(
        this TCollection collection,
        TCursor cursor,
        Func getCurrent,
        Func isFinished,
        Func advanceCursor){
      while(!isFinished(cursor)){
          yield return getCursor(collection,cursor)
          cursor = advanceCursor(cursor);
       }
     }
}

public class IteratorExample{
static void Main(){
var matrix = new List>{
   new List {1.0,1.1,1.2},
   new List {2.0,2.1,2.2},
   new List {3.0,3.2,3.3}
};

var iter = matrix.MakeCustomIterator(
             new int[]{0,0},
             (coll,cur)=>coll[cur[0]][cur[1]],
             (cur)=>cur[0] >2||cur[1]>2,
             (cur)=>new int[]{cur[0]+1,cur[1]+1});

foreach(var item in iter){
   Console.WriteLine(item);
}
}
}
我想说C#让我学过的stl和scheme的思想都回来了,甚至更多。
阅读(1305) | 评论(1) | 转发(0) |
0

上一篇:紧张

下一篇:编程之殇

给主人留下些什么吧!~~

安何2010-04-11 09:49:21