Возврат значений
... относится к способности
Function,
возвращать значение , когда функция завершается. И в итоге данное значение
может быть использовано в выражении или присвоено переменной.
Значение функции может быть возвращено тремя способами:
'' Используя имя функции, чтобы установить возвращаемое
значение и продолжить выполнение функции:
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
'' Эта программа демонстрирует функцию, возвращающую
значение.
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
Возвращение по ссылке
Результат функции также может быть возвращен по ссылке, а не по значению.
Семантика совершенно различна.
При назначении Byref как результат функции через заявления
Function = variable
или
Return variable функция не копирует переменную для возврата.
Вместо этого она возвращает ссылку на эту переменную. Сторона, вызывающая
функцию можно изменить переменную через ссылку, возвращенную функцией, без
необходимости использовать указатели вручную. Это очень похоже на
использование параметра
ByRef.
Для получения дополнительной информации обратитесь к:
Byref (результаты
функций)
Вручную, возвращение указателя как от
Byref-функции
Указав ключевое слово ByVal перед переменной результата в заявлениях
Function = variable
или
Return variable, адрес (как правило, хранится в указателе)
может быть передан непосредственно как есть, заставляя результат функции
по ByRef ссылаться на одну ячейку памяти, указываемую адресом. Например:
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( )
См. также