VisualBasic9.0前沿播报·静态篇(四)嵌套函数和Closure
敬业的IT人
互联网
佚名
2008-5-23 19:55:01
作者:ninputer 出处:博客园
为了支持Linq平台所支持的查询特性,VB9必须引入少量“函数式编程(FP)”的特性。本次所介绍的嵌套函数和Closue特性就是最重要的一个环节。在我们探讨为什么引入这样一些特性之前,先来看看这个特性是什么样的。
VB9允许在过程内部定义函数或子程序,如:
Public Sub MyProc()Sub MyProc() 
Sub Nested()Sub Nested()
'Code here
End Sub
End Sub
首先能够想到的第一个用途就是,一个帮助函数(HelperFunction)可以仅供某个过程单独使用,在这个过程外部无法访问到这个过程定义的嵌套函数。这与Delphi的嵌套函数类似。注意,嵌套函数仅可以在定义之后的上下文中访问。下面这个特性就是嵌套函数与传统函数最大的不同:
Public Sub MyProc()Sub MyProc()
Dim x As Integer

Sub Nested()Sub Nested(i As Integer)
x = i
End Sub
'Invoke subroutine
Nested(20)
Console.WriteLine(x);
End Sub
【深 度 阅 读】 相 关 文 章
·Visual Basic .NET中操作MsAgent
·用VisualC#动态生成组件
·Visual Basic .NET 中动态加载类
·用VisualC#.NET编写服务器日期控件
嵌套函数可以访问到外部过程中的变量,这个特性叫做Closure。有了Closure,我们就可以生成规则可变化的函数,以便实现延迟计算,这就是FP一个基本功能。VB9的内嵌函数Closure可能是通过Tuple特性来实现的,不过目前还没有关于原理的进一步计算。VB9内嵌函数相对于C#的匿名函数,主要有两个优点:
1。无需委托即可调用,可反复调用。当需要委托时,可通过addressof获取。
2。可直接递归。(当然,高手可以用Y算子,后话了……)
visual Basic还考虑增加匿名内嵌函数的表达方式,就是众所周知的Lambda表达式。但是目前还没有语法放出来,我就先不介绍了。
Add by : DevEduSiteMaster (2005-6-21:01:21) 进入讨论组讨论。·用VisualC#动态生成组件
·Visual Basic .NET 中动态加载类
·用VisualC#.NET编写服务器日期控件
- 最新文章
- VisualBasic9.0前沿播报·静态篇(三)扩展方法[05-23]
- VisualBasic9.0前沿播报·静态篇(二)对象初始..[05-23]
- VisualBasic9.0前沿播报·静态篇(一)局部变量..[05-23]
- VisualBasic9.0前沿播报·动态..[05-23]
- VisualBasic.NET中组件的叠加使用[05-23]
- VB2005的重构支持之创建方法重载[05-23]
- 相关文章
- VisualBasic9.0前沿播报·静态篇(三)扩展方法[05-23]
- VisualBasic9.0前沿播报·静态篇(二)对象初始..[05-23]
- VisualBasic9.0前沿播报·静态篇(一)局部变量..[05-23]
- VisualBasic9.0前沿播报·动态..[05-23]
- VisualBasic.NET中组件的叠加使用[05-23]
- VisualBasic.NET带来的新方法(一)[05-23]
