动态管理函数

普通用户可以忽略本节内容。

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()


本页地址:http://www.foxtable.com/webhelp/topics/1487.htm