On Thursday, 5 November 2015 at 16:29:30 UTC, Namal wrote:
Hello I am trying to convert BigInt to string like that while
trying to sort it:
string s1 = to!string(a).dup.sort;
and get an error
cannot implicitly convert expression (_adSortChar(dup(to(a))))
of type char[] to string
what do I do wrong?
Try this instead:
string s1 = to!string(a).idup.sort()
I suspect there are two things happening here. First, calling dup
on a string yields char[], not string (the difference being that
string is immutable and char[] is not). A char[] cannot
implicitly convert to string due to the difference in
immutability, although the compiler *should* realize that the
result of dup is a "unique" expression and be able to implicitly
convert it... It may be because you then pass it to sort, which
must keep it as a char[].
The second issue is that using .sort instead of .sort() (note the
parentheses) calls the built-in sort instead of
std.algorithm.sort, which is strongly discouraged. You should
always use std.algorithm.sort over the built-in sort, which you
can do just by appending those parentheses.