Last update April 17, 2012

DWiki /
Function Literals



Function Literals enable embedding anonymous functions directly into expressions. For example:

  int function(char c) fp;
  void main()
  {
    static int foo(char c) { return 6; }
    fp = &foo;
  }

is exactly equivalent to:

  int function(char c) fp;
  void main()
  {
    fp = function int(char c) { return 6;}; //note the semi-colon at the end
  }

We now have anonymous functions...

This has brought up the specter of /DynamicClosures. The nested and/or anonymous functions can only access dynamic scope, which means scope that exists on the stack at the time of execution. This differs from lexical scope, which refers to the scope as indicated by the program text structure.

(More information can be found in the D Spec: Closures and Function Literals.)


(From DWiki)
FrontPage | News | TestPage | MessageBoard | Search | Contributors | Folders | Index | Help | Preferences | Edit

Edit text of this page (date of last change: April 17, 2012 13:48 (diff))