Function过程

Function过程

计算机语句
Function过程是包含在Function和End Function语句之间的一组VBScript语句。Function过程与Sub过程类似,但是Function过程可以返回值。Function过程通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。Function返回值的数据类型总是Variant。
    中文名:Function 过程 外文名: 所属学科: 属性:VBScript 语句

分类

Function过程是包含在Function和End Function语句之间的一组VBScript语句。

Function Celsius(fDegrees)

Celsius = (fDegrees - 32) * 5 / 9

End Function

可以在模块、类或结构中定义Function过程。默认情况下此过程为Public,这意味着您可以从能够访问定义了此过程的模块、类或结构的应用程序中的任何地方调用此过程。

Function过程能够带参数,如由调用代码传递给它的常数、变量或表达式。

声明语法

声明Function过程的语法如下所示:

[ modifiers ] Function functionname [( parameterlist )] As returntype

' Statements of the Function procedure.

End Function

modifier可以指定与重载、重写、共享和隐藏相关的访问级别和信息。有关更多信息,请参见Function语句(Visual Basic)。

声明每个参数的方法与声明Sub过程的方法相同。

数据类型

每个Function过程都具有数据类型,就和每个变量都具有数据类型一样。此数据类型由Function语句中的As子句指定,它确定函数返回给调用代码的值的数据类型。下面的示例声明演示了这一点。

复制代码

Function yesterday() As Date

End Function

Function findSqrt(ByVal radicand As Single) As Single

End Function有关更多信息,请参见Function语句(Visual Basic)中的“各部分说明”。

返回值

Function过程发送回调用代码的值称为它的“返回值”。此过程使用以下两种方式之一返回此值:

它在过程的一个或多个语句中给自己的函数名赋值。在执行Exit Function 或 End Function语句之前,控制不会返回调用程序。下面的示例演示这一点。

Function functionname [( parameterlist )] As returntype

' The following statement does not transfer control back to the calling code.

functionname = expression

' When control returns to the calling code, expression is the return value.

End Function

它使用Return语句指定返回值,并直接将控制返回调用程序。下面的示例演示这一点。

Function functionname [( parameterlist )] As returntype

' The following statement immediately transfers control back to the calling code and returns the value of expression .

Return expression

End Function

将返回值分配给函数名的优点是,直到控制遇到Exit Function或End Function语句时才从过程返回控制。这样就可以先分配一个初步的值,以后如有必要再进行调整。

有关更多信息,请参见Function语句(Visual Basic)中的“返回值”。

返回数组

如果Function过程返回数组数据类型,则不能在函数内部访问数组的各个元素。如果试图这样做,编译器会将它解释为对过程的递归调用。下面的示例演示这一点。

Function allOnes(ByVal n As Integer) As Integer()

For i As Integer = 1 To n - 1

' The following statement generates a COMPILER ERROR .

allOnes(i) = 1

Next i

' The following statement generates a COMPILER ERROR .

Return allOnes()

End Function

在前面的示例中,编译器将尝试的赋值allOnes(i)=1解释为对赋值语句左边的allOnes的调用。它将尝试的Return allOnes()解释为没有参数的调用。两个语句都将生成编译器错误。

调用语法

调用Function过程的方法是将其名称和参数放在赋值语句的右边或表达式中。必须提供所有非可选参数的值,并且必须用括号将参数列表括起来。如果未提供任何参数,则也可以选择省略括号。

调用Function过程的语法如下所示:

lvalue = functionname [( argumentlist )]

If (( functionname [( argumentlist )] / 3) <= expression ) Then

当调用Function过程时,不必使用它的返回值。如果不使用它的返回值,将执行函数的所有操作,而忽略返回值。通常使用此方式调用MsgBox。

声明与调用阐释

下面的Function过程通过给定的直角三角形的两条直角边计算该三角形的最长边(即斜边)。

Visual Basic复制代码Function hypotenuse(ByVal side1 As Single, ByVal side2 As Single) As Single

Return Math.Sqrt((side1 ^ 2) + (side2 ^ 2))

End Function

下面的示例演示对hypotenuse的典型调用。

Visual Basic复制代码Dim testLength, testHypotenuse As Single

testHypotenuse = hypotenuse(testLength, 10.7)

相关词条

相关搜索

其它词条