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