On 28.07.2010 3:06, Nick Sabalausky wrote:
"Nick Sabalausky"<[email protected]> wrote in message
news:[email protected]...
Trying to convert some D1 code to D2:
On 2.047, I'm trying to do this:
import std.string;
void foo(string str)
{
str =
std.algorithm.map!(
(char a) { return inPattern(a, [digits, letters])? a : '_'; }
)(str);
}
And I'm getting:
delegate std.algorithm.__dgliteral1 cannot access frame of function
__dgliteral1
What's going on? How do I do it right? I figure I probably have some sort
of problem with strings being immutable(char)[] instead of char[], but it
doesn't look like that's the issue it's complaining about. Also, in this
particular case, I'm not concerned about multi-unit UTF-8 characters.
In my particular case, I've just switched to regex:
import std.regex;
str = replace(str, regex("[^a-zA-Z0-9]"), "_");
But I am still curious to hear what exactly was going on with map.
AFAIK weird compiler bug. See also thread about std.find which involves
the problem with map
http://www.digitalmars.com/d/archives/digitalmars/D/Improving_std.algorithm.find_113545.html#N113558
--
Dmitry Olshansky