返回值
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=ProPgReturnValue
- 最后更新: 2024-11-04
返回值
指 Function 过程在函数结束时具有一个值,该值可用于表达式或赋值给变量的能力。
函数可以通过三种方式返回值:
Return关键字后跟一个值,立即退出函数并将该值返回给调用者。函数也可以通过将
Function关键字或function_identifier赋值为所需返回值来返回值(但Function关键字或function_identifier不允许获取当前已赋值的值)。后两种方法不会导致函数退出。
start GeSHi
'' 使用函数名设置返回值并继续执行函数:
Function myfunc1() As Integer
myfunc1 = 1
End Function
'' 使用关键字 'Function' 设置返回值并继续执行函数:
Function myfunc2() As Integer
Function = 2
End Function
'' 使用关键字 'Return' 设置返回值并立即退出函数:
Function myfunc3() As Integer
Return 3
End Functionend GeSHi
start GeSHi
'' 本程序演示一个返回值的函数。
Declare Function myFunction () As Integer
Dim a As Integer
'这里取 myFunction 的返回值并加上 10。
a = myFunction() + 10
'由于 myFunction 返回 10,我们得到 10+10=20,将打印 20。
Print a
Function myFunction () As Integer
'这里让 myFunction 返回 10。
Function = 10
End Functionend GeSHi
在同一函数中混用 Return 关键字与 Function= 关键字、function_identifier= 或 Exit Function 关键字,在返回带构造函数的对象时是不支持的。
注意:
按值返回 UDT 实例时,Return 与 Function= 或 function_identifier= 对实例的处理方式不同(以优化执行时间):
使用
Return时,执行的唯一'Return u'直接调用拷贝构造函数。使用
Function=或function_identifier=时,构造函数始终在函数体开始时调用一次,之后每次执行'Function= u'或'function_identifier= u'仅调用赋值运算符。
返回引用
函数结果也可以按引用而非按值返回,语义有很大不同。
通过 Function = variable 或 Return variable 语句赋值 Byref 函数结果时,函数不会复制并返回变量的值,而是返回对该变量的引用。函数的调用者可以通过函数返回的引用修改该变量,无需手动使用指针。这与 Byref 参数非常相似。
更多信息请参考:Byref (function results)
从 Byref 函数手动按原样返回指针
通过在 Function = variable 或 Return variable 语句中的结果变量前指定 Byval 关键字,可以将地址(通常存储在指针中)直接按原样传递,强制 Byref 函数结果引用该地址所指向的相同内存位置。例如:
start GeSHi
Dim Shared i As Integer = 123
Function f( ) ByRef As Integer
Dim pi As Integer Ptr = @i
Function = ByVal pi
'' 或者,用 RETURN 的写法如下:
Return ByVal pi
End Function
Print i, f( )end GeSHi
参见
FunctionByref (function results)
返回 目录