Variable cannot be read at compile time.
Ali Çehreli
acehreli at yahoo.com
Fri Dec 8 01:36:39 UTC 2017
On 12/07/2017 04:45 PM, aliak wrote:
> Hi, I'm having a bit a trouble doing some compile time parsing. This works:
>
> immutable str = "he-.llo-the.re";
> immutable separators = "-.";
> enum a = str.splitter(separators).array;
>
> But this does not:
>
> enum b = str.splitter!(a => separators.canFind(a)).array;
>
> The error is: cannot deduce function from argument types !((a) =>
> separators.canFind(a))(immutable(string))
>
> And this does:
>
> enum c = str.splitter!(a => a == a).array;
>
> And this does not:
>
> enum d = str.splitter!(a => a == separators).array;
>
> What am I missing?
>
> Thanks!
>
>
Most work with 2.076 for me. 'd' does not work because while str.front
is dchar, separators is a string, so 'a == separators' does not compile:
import std.stdio;
import std.algorithm;
import std.range;
void main() {
immutable str = "he-.llo-the.re";
immutable separators = "-.";
enum a = str.splitter(separators).array;
enum b = str.splitter!(a => separators.canFind(a)).array;
enum c = str.splitter!(a => a == a).array;
// enum d = str.splitter!(a => a == separators).array;
writeln(a);
writeln(b);
writeln(c);
}
["he", "llo-the.re"]
["he", "", "llo", "the", "re"]
["", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
Ali
More information about the Digitalmars-d-learn
mailing list