Mysteries of the Underscore
    Johan Engelen 
    j at j.nl
       
    Mon Dec 24 11:30:31 UTC 2018
    
    
  
On Monday, 24 December 2018 at 11:18:44 UTC, Ron Tarrant wrote:
> I found a mention that in the definition of a delegate, a 
> function parameter and its type could be replaced by an 
> underscore:
>
> myTestRig.addOnDestroy(delegate void(Widget w) { quitApp(); } );
>
> became:
>
> myTestRig.addOnDestroy(delegate void(_) { quitApp(); } );
>
> I was trying to find some further documentation on this, but 
> I'm coming up empty.
>
> Questions:
>
> 1) What is this called (substituting an underscore in this 
> manner)?
>
> 2) Where can a learn more about it?
The underscore is just an identifier but nothing special, it 
could be any valid identifier like "ldkhfksdkdsg".
```
void ggg();
void takedelegate(void delegate(int) dlg);
void foo() {
     takedelegate( delegate void(asdadasdeg) { ggg(); } );
}
```
The type of the argument is deduced from the function the 
delegate is passed to.
-Johan
    
    
More information about the Digitalmars-d-learn
mailing list