On 6/25/2014 10:10 AM, Yuushi wrote:
I was wondering if D had something akin to std::function in C++.

Say I have some functions in an associative array, for example:

      auto mapping = ['!' : (string a) => toUpper!string(a), '^' :
(string a) => capitalize!string(a)];

What I want to do is basically declare something like:

     function string(string) transform;
     if(<some condition>) {
          transform = mapping[<lookup>];
     }

In C++, this could be done by declaring:

      std::function<string(string)> transform;

Is there an equivalent D construct for this?

For function pointers (free functions or static class functions):

alias TransformFunc = string function( string );
TransformFunc transform;

if( foo ) transform = &func;

For delegates (lambdas or pointers to class methods or inner functions):

alias TransformDg = string delegate( string );
TransformDG transform;

if( foo ) transform = &bar.method;

---
This email is free from viruses and malware because avast! Antivirus protection 
is active.
http://www.avast.com

Reply via email to