进步的语法糖

1344阅读 1评论2010-03-30 mhsy2003
分类:

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的思想都回来了,甚至更多。
上一篇:紧张
下一篇:编程之殇

文章评论