|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
也许C#刚上市的时候有些抄袭net网页编程吧,但自从C#2.0上市之后,整个局面就扭转乾坤了,不但net网页编程在模仿C#,而且他从来都没能跟得上C#的脚步。VisualBasic团队的PaulVick比来保守了一个企图——在一个还没有取名的版本中增加迭代器。固然这意味着将要完成一个和C#的yieldreturn相似的语句,可是这个企图看上往更像是函数式程序员经常使用的一种功效。
C#的迭代器是一种持续的情势,在相似Scheme如许的盛行言语中很少利用如许的手艺。看一下它的源代码,能够看出它在每次值要举行前往的时分,这个函数都被中止了。然后该函数从中止的中央入手下手处置下一个被哀求前往的值。这类体例的面前,本色是把函数酿成一个具有外部形态机的类。经由过程反编译这个类,就能够发明为了完成这个类,我们必要大批的簿记(bookkeeping)历程。
VisualBasic的迭代器,看上往更像一个匿名函数。IEnumerabl的函数将一般以一个“ReturnIterator”代码块入手下手,它是VB新匿名函数、多行函数语法的一种惯例。在这个代码块内里,人们就能够挪用Return和ReturnEach如许的言语来前往值了。
在匿名迭代器中的Return语句事情体例就像C#的yieldreturn一样。“yield”如许的关头字能够不必要,由于其在高低文傍边已举行了表示【译者注:意指在ReturnIterator……EndIterator这个代码块中已表示Return是“yield”的体例了。】。
而ReturnEach语句无效地“解开”一个汇合,完成了一次就前往个中的一切值。
VB的语法比C#版本具有一些上风。因为它是在别的一个函数傍边完成了一个匿名函数,人们就可以够做一些前置反省和在迭代器创立以后举行盘算。它也不必要在一个办法中往查找多个迭代器的完成,特定的迭代器都是在运转时才断定的。
人们也能够事后自界说一些迭代器,在函数的全部感化域内创立并利用。当必要把恣意的数据布局转换为某种能够被LINQ查询标志举行操纵的流动布局的时分,这就显得出格有效。
检察英文原文:IteratorsforVB
来自:http://www.infoq.com/cn/news/2008/08/VB-Iterators归根到底,net网页编程跨平台可以,但是要重新编写代码,否则还分什么J2EE/J2SE/J2ME呢! |
|