Visual Basic团队透露将为VB添加迭代器

Visual Basic团队的Paul Vick最近泄露了一个计划——在一个还没有取名的版本中添加迭代器。虽然这意味着将要实现一个和C#的yield return类似的语句,但是这个计划看上去更像是函数式程序员常用的一种功能。

\u0026#xD;\n

C#的迭代器是一种延续的形式,在类似Scheme这样的流行语言中很少使用这样的技术。看一下它的源代码,可以看出它在每次值要进行返回的时候,这个函数都被中断了。然后该函数从中断的地方开始处理下一个被请求返回的值。这种方式的背后,实质是把函数变成一个具有内部状态机的类。通过反编译这个类,就可以发现为了实现这个类,我们需要大量的簿记(bookkeeping)过程。

\u0026#xD;\n

Visual Basic的迭代器,看上去更像一个匿名函数。IEnumerabl的函数将通常以一个“Return Iterator”代码块开始,它是VB新匿名函数、多行函数语法的一种特例。在这个代码块里面,人们就可以调用Return和Return Each这样的语言来返回值了。

\u0026#xD;\n

在匿名迭代器中的Return语句工作方式就像C#的yield return一样。“yield”这样的关键字可以不需要,因为其在上下文当中已经进行了暗示【译者注:意指在Return Iterator……End Iterator这个代码块中已经暗示Return是“yield”的方式了。】。

\u0026#xD;\n

而Return Each语句有效地“解开”一个集合,实现了一次就返回其中的所有值。

\u0026#xD;\n

VB的语法比C#版本具有一些优势。由于它是在另外一个函数当中实现了一个匿名函数,人们就能够做一些前置检查和在迭代器创建之后进行计算。它也不需要在一个方法中去查找多个迭代器的实现,特定的迭代器都是在运行时才确定的。

\u0026#xD;\n

人们也可以预先自定义一些迭代器,在函数的整个作用域内创建并使用。当需要把任意的数据结构转换为某种可以被LINQ查询标记进行操作的固定结构的时候,这就显得特别有用。

\u0026#xD;\n查看英文原文:Iterators for VB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/243717.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生活的花环:看雷加对文学的回顾

在《北京文学》工作时,经常在文联的春节联欢会上见到雷加先生,只是远远的看,没有说过话。但是知道他是延安时期的重要作家,新中国成立后也有不少作品问世,可惜我真的没有怎么读过他的作品。后来因为编辑他的新书《生活…

opendir 从不兼容的指针类型赋值

// open DIRs DIR *dir;struct dirent *dirp;if ((dpopendir(fullpath))NULL){write_log("No such dir:%s!\n",fullpath);return -1;}如果在dir 前面的DIR加一个struct 修饰符,opendir这里就有 从不兼容的指针类型赋值 警告。 t…

64位Ubuntu kylin 16.04使用fastboot下载内核到tiny4412开发板

1.编译内核,使用官方的linux-3.5-20151029.tgz 2.解压进入内核目录 3.cp tiny4412_linux_defconfig .config 4.make menuconfig System Type ---> [ ] Support TrustZone-enabled Trusted Execution Environment #去掉这个选项 Kernel hacking ---> …

线性序列机与串口接口DAC驱动设计与验证

线性序列机与串口接口DAC驱动设计与验证 TLV5618 型 DAC 内部工作原理 TLV5618 是一个基于电压输出型的双通道 12 位单电源数模转换器,其由串行接口、一个速度和电源控制器、 电阻网络、 2 倍增益的输出缓冲器组成。 TLV5618 使用 CMOS 电平兼容的三线制串行总线与各种处理…

克服SOA实施过程中的障碍

Jonathan Mack说,现在SOA实施“并不像许多分析机构或Web研讨会所指出的那样普遍”。原因很简单:成功的SOA实施是颇具挑战性的。Jonathan Mack概述了三大挑战: \u0026#xD;\n解决早于SOA的架构——将现有企业资产整合到SOA里去。 \u0026#xD;\n …

Linux生成随机字符串

cat /dev/urandom | sed s/[^a-zA-Z0-9]//g | strings -n C | head -n L其中C表示字符串的字符数,L表示要生成多少行字符。 [rootlocalhost sqlite3]# cat /dev/urandom | sed s/[^a-zA-Z0-9]//g |strings -n 5|head -n 1 oMcFO

“全裸”:看向京的雕塑艺术展

《一百个人演奏你?还是一个人?》 9月6日,向京雕塑艺术亚洲巡回展在北京798艺术区当代唐人艺术中心开幕。展览主题是“全裸”,意在恐怕不光是女人身体的曝光,更是女性内心的一种敞开。展览的宣传页有这样一句提示&#…

易错笔记总结

易错笔记总结 每一个模块都需要有一个使能信号(en)和一个结束信号(done),以便控制每一个模块的开始和结束。这个使能信号(en)一般是一般是以脉冲的形式给出。编写激励文件时,输入是reg,输出是wire。这是连接试验台的检验性质决定的。每一个输入端口,在激励时记得初始…

Unable to find the ncurses libraries的解决办法

我们在更新CentOS或者Ubuntu的内核时,执行make menuconfig可能看如这样的错误: *** Unable to find the ncurses libraries or the *** required header files. *** ‘make menuconfig’ requires the ncurses libraries. *** *** Install ncurses (ncu…

一之活生的院鲁

地点:798,这位老者在看什么呢? 广西的何(谢)赛克球场救险。 叶(梁)戈亮,大步搓球。 双打天王,发球胜似闲步。

我怎么了?

好吧,我又想发牢骚了,最近总是忍不住自己的脾气,想要发泄一下,但是仔细想想怎么发泄呢,找人打一架吗?估计也打不过别人,被人一脚给踢飞了,YY一会还行,其实无非就是在各种…

线性序列机与串行接口ADC驱动设计与验证

线性序列机与串行接口ADC驱动设计与验证 ADC128S022 型 ADC 内部工作原理 在 AC620 开发板上使用的模数转换器为逐次逼近型的低功耗芯片 ADC128S022,其具有 8 通道以及 12 位的分辨率。电源采用独立的模拟供电以及数字供电,其中模拟电源 VA 输入 范围为 2.7V~5.25V,数字电源…

从身体扮演到身份确认:谈谈EMI的人体自拍作品

1906年,一个叫依莫斤坎安宁(Imogen Cunningham)的女摄影师在美国华盛顿大学的草坪上,脱掉了自己的衣服,拍下了世界上第一张女性人体自拍作品。由此打破了一直以来由男性主体和视角塑造与规定的女性形象,尤其…

二之活生院鲁

新长征路上的摇滚——老崔老藏?崔是崔健的崔,藏却不是藏天朔的藏,乃天津卫超隐喻发明人藏策是也。 在可口可乐、手机和用纸做杯子的时代,浪诗是件多么奢侈的事情。 我的乒乓师傅——白丁。他唱歌爱嚼起嘴巴。 最疯狂的一个业余歌手…

U_boot 的 bootcmd 和bootargs参数详解

http://www.cnblogs.com/cornflower/archive/2010/03/27/1698279.html U-boot的环境变量值得注意的有两个: bootcmd 和bootargs。 u-bootcmd 前面有说过bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不…

core dump

什么是coredump?通常情况下coredmp包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息等。可以理解为把程序工作的当前状态存储成一个文件。许多程序和操作系统出错时会自动生成一个core文件。如何使用coredump?coredump可…

TFT显示屏驱动设计与验证

TFT显示屏驱动设计与验证 RGB 接口的 TFT 屏扫描方式和 VGA (Video Graphics Array)标准类似,也是使用行列扫描的方式。在介绍 TFT 屏扫描原理之前,先来介绍下 VGA 显示器的扫描原理。在 VGA 标准兴起的时候,常见的彩色显示器一般由 CRT(阴极射线管)构成,色彩是 由 RGB 三…

看日本雅-miyavi演唱会

九月底和女儿在星光现场音乐厅看了雅-miyavi的演唱会。雅-miyavi是目前日本最受欢迎的视觉系摇滚歌手之一。所谓视觉系是起源于欧美,后风行日本的注重视觉效果的演唱形式。对他们来说,歌唱的技术也许并不重要,重要的是服饰、化妆以及舞台照明…