June 06, 2010 [Issue 4282] New: Problem in AAs with fixed size arrays as keys | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=4282 Summary: Problem in AAs with fixed size arrays as keys Product: D Version: future Platform: x86 OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: druntime AssignedTo: sean@invisibleduck.org ReportedBy: bearophile_hugs@eml.cc --- Comment #0 from bearophile_hugs@eml.cc 2010-06-06 05:37:13 PDT --- This D2 program, compiles and run with DMD v2.046: import std.stdio: writeln; void main() { char[] txt = cast(char[])("this is just a test".dup); enum int N = 2; int[char[N]] aa; foreach (i; 0 .. txt.length + 1 - N) { char[2] key = txt[i .. i + N]; aa[key]++; } writeln(aa); } The correct output: [[t,h]:1,[i,s]:2,[u,s]:1,[t, ]:1,[ ,t]:1,[e,s]:1,[h,i]:1,[ ,i]:1,[ ,a]:1,[a, ]:1,[t,e]:1,[ ,j]:1,[s, ]:2,[j,u]:1,[s,t]:2] ----------------- But after this small change: import std.stdio: writeln; void main() { char[] txt = cast(char[])("this is just a test".dup); enum int N = 2; int[char[N]] aa; foreach (i; 0 .. txt.length + 1 - N) { aa[txt[i .. i + N]]++; } writeln(aa); } It doesn't work, inside aa goes only one key-value pair. (Similar traps are very bad in a language. In this situation I suggest to produce a compile-time error, or better to convert the slice into the correct 2 char array to be used as key). -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
June 24, 2011 [Issue 4282] Problem in AAs with fixed size arrays as keys | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile_hugs@eml.cc | http://d.puremagic.com/issues/show_bug.cgi?id=4282 kennytm@gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |kennytm@gmail.com Resolution| |FIXED --- Comment #1 from kennytm@gmail.com 2011-06-24 13:22:46 PDT --- (In reply to comment #0) > (Similar traps are very bad in a language. In this situation I suggest to produce a compile-time error, or better to convert the slice into the correct 2 char array to be used as key). DMD now errors with Error: cannot implicitly convert expression (txt[i..i + 2u]) of type char[] to char[2u] -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation