import ballerina/io;
function test (int x, string s) returns (float) {
int y = check <int>s;
float f = x * 1.0 * y;
return f;
}
function foo (int x, function (int, string) returns (float) bar)
returns (float) {
return x * bar(10, "2");
}
function getIt () returns (function (int, string) returns (float)) {
return test;
}function main (string[] args) {
io:println("Answer: " + foo(10, test));
io:println("Answer: " + foo(10, getIt()));
function (int, string) returns (float) f = getIt();
io:println("Answer: " + foo(10, f));
}
Function PointersA function pointer is a Ballerina type that allows you to use functions as variables, arguments to functions, and function return values. The name of a function serves as a pointer to that function when called from other functions or operations. The definition of the function name provides the type of the pointer in terms of a function signature. |
|
import ballerina/io;
|
|
function test (int x, string s) returns (float) {
int y = check <int>s;
float f = x * 1.0 * y;
return f;
}
|
The’test’ function acts a variable function pointer in the ‘main function’. |
function foo (int x, function (int, string) returns (float) bar)
returns (float) {
return x * bar(10, "2");
}
|
Function pointer as a parameter. |
function getIt () returns (function (int, string) returns (float)) {
return test;
}
|
Function pointer as a return type. |
function main (string[] args) {
|
|
io:println("Answer: " + foo(10, test));
io:println("Answer: " + foo(10, getIt()));
|
Value ‘test’ will serve as a function pointer to the ‘test’ function. |
function (int, string) returns (float) f = getIt();
io:println("Answer: " + foo(10, f));
}
|
Function pointer as a variable; |
$ ballerina run function-pointers.bal
Answer: 200.0
Answer: 200.0
Answer: 200.0
|
|