Hi fellow wiki editors!

To help newly registered users get more familiar with the wiki (and maybe older users too) there is now a {{Welcome to the wiki}} template. Have a look at it and feel free to add it to new users discussion pages (and perhaps your own).

I have tried to keep the template short, but meaningful. /Johan G

Nasal Callbacks Explained

From FlightGear wiki
Jump to: navigation, search


Many Nasal functions accept callbacks as function arguments, i.e. you can basically pass around functions as arguments (and return values). Some of the more common uses in FlightGear are callbacks invoked by timers or by listeners. So a callback parameter is basically a "pointer" (reference) to a function. The function can be free-standing or part of some other data structure (vector/hash), or a method call, i.e. bound to a symbolic name - or an anonymous function, that is directly specified "inline", without any name:

Consider the following snippet of code, which assigns a function to the say_hello symbol:

var say_hello = func() {
 print("Hello!");
}

# to call the function:
 say_hello();


But you could just as well call an anonymous function directly, without binding it to any symbolic name:

(func() {
 print("Hello!");
}) ();

TODO, explain:

  • free functions with/without parameters
  • method calls with/without parameters
  • me calls with/without parameters
  • call()