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
