Call a function: Difference between revisions

No edit summary
Line 4,082:
The shell does not support the use of named parameters. There is no lookahead in the shell, so functions cannot be called until their definition has been run.
 
=={{header|VBA}}==
<lang vb>'definitions/declarations
 
'Calling a function that requires no arguments
Function no_arguments() As String
no_arguments = "ok"
End Function
 
'Calling a function with a fixed number of arguments
Function fixed_number(argument1 As Integer, argument2 As Integer)
fixed_number = argument1 + argument2
End Function
 
'Calling a function with optional arguments
Function optional_parameter(Optional argument1 = 1) As Integer
'Optional parameters come at the end of the parameter list
optional_parameter = argument1
End Function
 
'Calling a function with a variable number of arguments
Function variable_number(arguments As Variant) As Integer
variable_number = UBound(arguments)
End Function
 
'Calling a function with named arguments
Function named_arguments(argument1 As Integer, argument2 As Integer) As Integer
named_arguments = argument1 + argument2
End Function
 
'Using a function in statement context
Function statement() As String
Debug.Print "function called as statement"
statement = "ok"
End Function
 
'Using a function in first-class context within an expression
'see call the functions
 
'Obtaining the return value of a function
Function return_value() As String
return_value = "ok"
End Function
 
'Distinguishing built-in functions and user-defined functions
'There is no way to distinguish built-in function and user-defined functions
 
'Distinguishing subroutines And functions
'subroutines are declared with the reserved word "sub" and have no return value
Sub foo()
Debug.Print "subroutine",
End Sub
'functions are declared with the reserved word "function" and can have a return value
Function bar() As String
bar = "function"
End Function
 
'Stating whether arguments are passed by value or by reference
Function passed_by_value(ByVal s As String) As String
s = "written over"
passed_by_value = "passed by value"
End Function
'By default, parameters in VBA are by reference
Function passed_by_reference(ByRef s As String) As String
s = "written over"
passed_by_reference = "passed by reference"
End Function
 
'Is partial application possible and how
'I don't know
 
'calling a subroutine with arguments does not require parentheses
Sub no_parentheses(myargument As String)
Debug.Print myargument,
End Sub
 
'call the functions
Public Sub calling_a_function()
'Calling a function that requires no arguments
Debug.Print "no arguments", , no_arguments
Debug.Print "no arguments", , no_arguments()
'Parentheses are not required
'Calling a function with a fixed number of arguments
Debug.Print "fixed_number", , fixed_number(1, 1)
'Calling a function with optional arguments
Debug.Print "optional parameter", optional_parameter
Debug.Print "optional parameter", optional_parameter(2)
'Calling a function with a variable number of arguments
Debug.Print "variable number", variable_number([{"hello", "there"}])
'The variable number of arguments have to be passed as an array
'Calling a function with named arguments
Debug.Print "named arguments", named_arguments(argument2:=1, argument1:=1)
'Using a function in statement context
statement
'Using a function in first-class context within an expression
s = "no_arguments"
Debug.Print "first-class context", Application.Run(s)
'A function name can be passed as argument in a string
'Obtaining the return value of a function
returnvalue = return_value
Debug.Print "obtained return value", returnvalue
'Distinguishing built-in functions and user-defined functions
'Distinguishing subroutines And functions
foo
Debug.Print , bar
'Stating whether arguments are passed by value or by reference
Dim t As String
t = "unaltered"
Debug.Print passed_by_value(t), t
Debug.Print passed_by_reference(t), t
'Is partial application possible and how
'I don 't know
'calling a subroutine with arguments does not require parentheses
no_parentheses "calling a subroutine"
Debug.Print "does not require parentheses"
Call no_parentheses("deprecated use")
Debug.Print "of parentheses"
End Sub
</lang>{{out}}
<pre>no arguments ok
no arguments ok
fixed_number 2
optional parameter 1
optional parameter 2
variable number 2
named arguments 2
function called as statement
first-class context ok
obtained return value ok
subroutine function
passed by value unaltered
passed by reference written over
calling a subroutine does not require parentheses
deprecated use of parentheses</pre>
=={{header|WDTE}}==
<lang wdte>let noargs => + 2 5;
255

edits