digitalmars.D.learn - Correct use of map
- Dfr (8/8) Jan 03 2014 Here is few code eaxamples, i don't know why it is doesn't work
- bearophile (15/24) Jan 03 2014 It works for me:
- Dfr (39/66) Jan 03 2014 Thank you fo reply, i'm using DMD32 D Compiler v2.064
- monarch_dodra (7/10) Jan 04 2014 Hi Dfr. It's a known (and fixed) bug.
Here is few code eaxamples, i don't know why it is doesn't work as expected. Here i want to transform string into list of tuples split by character: auto nameparts = splitter("go.home", '.').map!(v => tuple(v,0)).array; This gives me not very useful message about assert and stuff: core.exception.AssertError std.algorithm(1942): Assertion failure
Jan 03 2014
Dfr:Here is few code eaxamples, i don't know why it is doesn't work as expected. Here i want to transform string into list of tuples split by character: auto nameparts = splitter("go.home", '.').map!(v => tuple(v,0)).array; This gives me not very useful message about assert and stuff: core.exception.AssertError std.algorithm(1942): Assertion failureIt works for me: void main() { import std.stdio, std.algorithm, std.typecons, std.range; auto nameParts = "go.home" .splitter('.') .map!(v => tuple(v, 0)) .array; nameParts.writeln; } Output: [Tuple!(string, int)("go", 0), Tuple!(string, int)("home", 0)] I am using dmd 2.065alpha on Windows. Bye, bearophile
Jan 03 2014
Thank you fo reply, i'm using DMD32 D Compiler v2.064 Tried to copy/paste your code and here is full message what it prints: core.exception.AssertError std.algorithm(1942): Assertion failure ---------------- t(_d_assertm+0x16) [0x807d326] t() [0x808123a] t(pure nothrow trusted void std.algorithm.swap!(std.typecons.Tuple!(immutable(char)[], int).Tuple).swap(ref std.typecons.Tuple!(immutable(char)[], int).Tuple, ref std.typecons.Tuple!(immutable(char)[], int).Tuple)+0x59) [0x8079de1] t(pure nothrow safe void std.typecons.Tuple!(immutable(char)[], int).Tuple.opAssign!(std.typecons.Tuple!(immutable(char)[], int).Tuple).opAssign(std.typecons.Tuple!(immutable(char)[], int).Tuple)+0x3c) [0x807958c] t(pure nothrow safe void std.array.Appender!(std.typecons.Tuple!(immutable(char)[], int).Tuple[]).Appender.put!(std.typecons.Tuple!(immutable(char)[], int).Tuple).put(std.typecons.Tuple!(immutable(char)[], int).Tuple)+0x8e) [0x8079cde] t(_D3std5array118__T5arrayTSmain90__T9MapResultS14main9__lambda1TS3std9algorithm19__T8splitterTAyaTaZ8splitterFAyaaZ6ResultZ9MapResultZ5arrayFSmain90__T9MapResultS14main9__lambda1TS3std9algorithm19__T8splitterTAyaTaZ8splitterFAyaaZ6ResultZ9MapResultZAS3std8typecons16__T5Tupl TAyaTiZ5Tuple+0x46) [0x8079666] t(_Dmain+0x50) [0x8074a20] t(void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll().void __lambda1()+0x10) [0x807e5d8] t(void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate())+0x18) [0x807e550] t(void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll()+0x27) [0x807e59f] t(void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate())+0x18) [0x807e550] t(_d_run_main+0x117) [0x807e4e7] t(main+0x14) [0x807ab3c] /lib/libc.so.6(__libc_start_main+0xf5) [0x45003865] ---------------- On Friday, 3 January 2014 at 20:07:34 UTC, bearophile wrote:Dfr:Here is few code eaxamples, i don't know why it is doesn't work as expected. Here i want to transform string into list of tuples split by character: auto nameparts = splitter("go.home", '.').map!(v => tuple(v,0)).array; This gives me not very useful message about assert and stuff: core.exception.AssertError std.algorithm(1942): Assertion failureIt works for me: void main() { import std.stdio, std.algorithm, std.typecons, std.range; auto nameParts = "go.home" .splitter('.') .map!(v => tuple(v, 0)) .array; nameParts.writeln; } Output: [Tuple!(string, int)("go", 0), Tuple!(string, int)("home", 0)] I am using dmd 2.065alpha on Windows. Bye, bearophile
Jan 03 2014
On Saturday, 4 January 2014 at 07:57:04 UTC, Dfr wrote:Thank you fo reply, i'm using DMD32 D Compiler v2.064 Tried to copy/paste your code and here is full message what it prints:Hi Dfr. It's a known (and fixed) bug. If you need to workaround it, you can use a named struct instead, something like: struct TSI{string s; int i;} auto nameparts = splitter("go.home", '.').map!(v => TSI(v,0)).array;
Jan 04 2014