Public Sub MyProc()Sub MyProc() Sub Nested()Sub Nested() 'Code here End Sub End Sub
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
嵌套函数可以访问到外部过程中的变量,这个特性叫做Closure。有了Closure,我们就可以生成规则可变化的函数,以便实现延迟计算,这就是FP一个基本功能。VB9的内嵌函数Closure可能是通过Tuple特性来实现的,不过目前还没有关于原理的进一步细节。VB9内嵌函数相对于C#的匿名函数,主要有两个优点:
1。无需委托即可调用,可反复调用。当需要委托时,可通过AddressOf获取。2。可直接递归。(当然,高手可以用Y算子,后话了……)
Visual Basic还考虑增加匿名内嵌函数的表达方式,就是众所周知的Lambda表达式。但是目前还没有语法放出来,我就先不介绍了。
关于我们 / 给我留言 / 版权举报 / 意见建议 / 网站编程QQ群 Copyright ©2003- 2024 Lihuasoft.net webmaster(at)lihuasoft.net 加载时间 0.00373