Null aware function invocation operator
Asked Answered
S

2

85

In the same way we can have

nullableClassInstance?.method(blah)

Is there a way to do

nullableFunctionInstance?(blah)

In other words, is there an operator that checks whether a function instance is not null, if so, invoke the function all in one line?

Shallow answered 10/7, 2017 at 21:53 Comment(1)
G
193

Using the call method, you can achieve what you want with:

nullableFunctionInstance?.call(blah)

There's also the apply method if you want to pass arguments.

Giffard answered 10/7, 2017 at 22:9 Comment(1)
But I have to wrap my function in a callable class or am I misunderstanding this? Invoking "call" or "apply" on a variable of type e.g. 'void Function(int)' throws a compiler errorTulle
E
20

If you have a Function Object , you can use the call method and send all the parameters to that which works exactly as calling the function. Here , you can use the null aware member access operator.

void myFun(int a , int b){...}

var myVar = myFun ;

call

The function myVar will only get called if its not null as shown below.

myVar?.call( arg1 , arg2 );

apply

If your function is dynamic or you wish to control which function is being called at run time , you can use the apply static method of Function like so :

Function.apply(myVar , [arg1 , arg2]);

apply takes the function and a List of parameters that will be sent to the function.

Read more about call and apply :

Enfranchise answered 10/4, 2020 at 13:24 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.