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

Visual Basic团队透露将为VB添加迭代器相关推荐

  1. 用VB.NET(Visual Basic 2010)封装EXCEL VBA为DLL_COM组件(二)

    --将EXCEL VBA代码移植到VB.NET .NET是微软公司在2002年推出的全新编程框架,支持多种语言应用程序开发.使用Visual Basic在Microsoft .NET Framewor ...

  2. Visual Basic了解

    Visual Basic是一种由微软公司开发的结构化的.模块化的.面向对象的.包含协助开发环境的事件驱动为机制的可视化程序设计语言.这是一种可用于微软自家产品开发的语言.它源自于Basic编程语言.V ...

  3. 特性(C# 和 Visual Basic)

    特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集.类型.方法.属性等)相关联. 特性与程序实体关联后,即可在运行时使用名为"反射"的技术查询特性. 有关更多信息,请参见 ...

  4. Visual Basic里与Print有关的函数

    在Visual Basic里信息要按一定的格式输出,需要使用tab.Spc.Space$函数,这些函数必须与Print方法配合使用. 1.Tab函数 格式:Tab(n) 功能:把光标移到由参数n指定的 ...

  5. Visual Basic 6.0 中文企业版

    Visual Basic6是现阶段最多人使用的一款Basic编程软件,Visual Basic又被称作VB,是很多软件工程学生必学的课程之一,通过Visual Basic用户可以轻松的制作出软件窗口, ...

  6. 用VB.NET(Visual Basic 2010)封装EXCEL VBA为DLL_COM组件(一)

    vb.net教程https://www.xin3721.com/eschool/vbnetxin3721/ 为了保护自己辛辛苦苦编写的Excel VBA代码不被盗用,我们需要对Excel VBA代码进 ...

  7. 用VB.NET(Visual Basic 2010)封装EXCEL VBA为DLL_COM组件(一)

    为了保护自己辛辛苦苦编写的Excel VBA代码不被盗用,我们需要对Excel VBA代码进行加密.通常的做法是利用给工程设置密码的方法实现加密,对于这类加密方法,由于存在安全度低.易破解等问题,因此 ...

  8. 如何使用 Visual Basic 脚本添加默认打印机

    本文介绍如何使用 Visual Basic 脚本添加打印机并使其成为默认打印机. 如果打印机不是本地连接到 LPT.COM 或 USB 端口,终端服务上的"Windows 打印机映射&quo ...

  9. vb获取计算机桌面路径,visual basic(vb.net)中如何获取桌面路径

    visual basic(vb.net)中获取桌面路径的应用场景 今天华仔研究了一天的按键精灵, 其实华仔以前也用过,之前做的是简单的推广, 现在想来,还是可以深入学习的, 尤其这次,踏出了操控谷歌浏 ...

最新文章

  1. Vue中v-if和v-show的使用场景
  2. Windows XP系统八种安全模式揭密
  3. 搜狐视频如何开启青少年模式
  4. Python爬虫实战(5):模拟登录淘宝并获取所有订单(1)
  5. python保存csv_在python中修改和保存csv文件
  6. c55x 汇编语言指令,[转载]关于TMS320C55x的汇编语言中的.sym伪指令
  7. 2019 最新 200 道 Java 面试题
  8. 程序开发——开源软件库
  9. excel怎么设置自动计算_Excel智能化考勤表,自带万年历设置,考勤加班计算,无脑轻松...
  10. 服务器安装谷歌浏览器
  11. 耳机在Mac上听不到声音怎么办?
  12. 下载 沙耶之歌Android_沙耶之歌安卓版
  13. volatility命令
  14. 两条边延长角会有什么变化_《直线、射线、线段和角》教学设计
  15. 无线网服务器断开怎么回事,无线网自动断开怎么回事
  16. cmake学习笔记--cmake的打印、创建工程等基本操作(1)
  17. 2021 12月CSP认证心得
  18. Linux内核配置(9)
  19. 未转变者服务器3.26物品id,Unturned未转变者3.21版本物品ID代码汇总
  20. 编程语言居然是魔法咒语!

热门文章

  1. 【VLC-Android】vlc-android简例
  2. 企业能为员工储蓄点什么呢
  3. 時鐘,天氣預報--js
  4. 部署Small Business Server 2003服务器之一
  5. bl小说里面有个机器人管家_丰田开发机器人管家原型机 像蝙蝠一样挂在天花板上...
  6. c++ string分割字符串split_python 字符串和文本处理
  7. 天津大学计算机在线作业答案,天大19秋《计算机应用基础》在线作业二【满分答案】...
  8. oracle回退脚本怎么写_直播间脚本要怎么写?李佳琦、薇娅直播间直播脚本解析!...
  9. Ubuntu16.04编译RK3399:make kernel.img error
  10. 灵动标签 php脚本,帝国CMS灵动标签PHP代码实现标签无限嵌套的效果