动态管理函数
普通用户可以忽略本节内容。
Functions不仅可以用来执行自定义函数,还可以动态管理函数。
Functions提供了下述方法管理函数:
编译函数是需要时间的,所以动态函数一般用于对性能要求不高,但是对灵活性要求很高的场合。
我们的建议是尽量不要使用动态函数,而应该事先定义好函数。
示例
下面的代码定义了一个简单的Sum函数:
Dim
sb
As
New
StringBuilder
sb.AppendLine("Dim
Val1 As Integer = args(0)")
sb.AppendLine("Dim
Val2 As Integer = args(1)")
sb.AppendLine("Dim
Sum As Integer = Val1 + Val2")
sb.AppendLine("Return
Sum")
Functions.Add("Sum",
sb.ToString())
Functions.Complie()
'编译之后,增加的函数才能生效
这样我们就可以在其余地方调用此函数:
Dim sum As Integer = Functions.Execute("Sum",100,200)
如果不再需要某个动态增加的函数,可以用Remove方法移除之:
Functions.Remove("Sum")
注意用Remove方法移除的函数还是可以执行的,直到调用Complie方法重新编译,才会真正意义上移除之。
一般来说,如果函数代码需要动态合成,建议用StringBuilder,比直接用&字符串拼接要高效;
如果函数代码是固定的,可以考虑将代码直接包裹在CDATA标记中,这样不容易出错,例如:
Dim
Code
As
String
=
<![CDATA[
Dim Val1 As Integer = args(0)
Dim Val2 As Integer = args(1)
Dim Sum As Integer = Val1 + Val2
Return "结果是:"
& Sum
]]>.Value
Functions.Add("ShowSum",
Code)
Functions.Complie()