Skip to content

返回值


返回值

Function 过程在函数结束时具有一个值,该值可用于表达式或赋值给变量的能力。

函数可以通过三种方式返回值:

  • Return 关键字后跟一个值,立即退出函数并将该值返回给调用者。

  • 函数也可以通过将 Function 关键字或 function_identifier 赋值为所需返回值来返回值(但 Function 关键字或 function_identifier 不允许获取当前已赋值的值)。后两种方法不会导致函数退出。

start GeSHi

vb
'' 使用函数名设置返回值并继续执行函数:
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 Function

end GeSHi

start GeSHi

vb
'' 本程序演示一个返回值的函数。

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 Function

end GeSHi

在同一函数中混用 Return 关键字与 Function= 关键字、function_identifier=Exit Function 关键字,在返回带构造函数的对象时是不支持的。

注意:

按值返回 UDT 实例时,ReturnFunction=function_identifier= 对实例的处理方式不同(以优化执行时间):

  • 使用 Return 时,执行的唯一 'Return u' 直接调用拷贝构造函数。

  • 使用 Function=function_identifier= 时,构造函数始终在函数体开始时调用一次,之后每次执行 'Function= u''function_identifier= u' 仅调用赋值运算符。

返回引用

函数结果也可以按引用而非按值返回,语义有很大不同。

通过 Function = variableReturn variable 语句赋值 Byref 函数结果时,函数不会复制并返回变量的值,而是返回对该变量的引用。函数的调用者可以通过函数返回的引用修改该变量,无需手动使用指针。这与 Byref 参数非常相似。

更多信息请参考:Byref (function results)

从 Byref 函数手动按原样返回指针

通过在 Function = variableReturn variable 语句中的结果变量前指定 Byval 关键字,可以将地址(通常存储在指针中)直接按原样传递,强制 Byref 函数结果引用该地址所指向的相同内存位置。例如:

start GeSHi

vb
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

参见

  • Function
  • Byref (function results)

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系