digitalmars.D.learn - .get refuses to work on associative array
- p.shkadzko (20/21) Apr 15 2020 Performing "debug" build using ldc2 for x86_64.
- H. S. Teoh (9/34) Apr 15 2020 Are you sure the error is on the line you indicated? The error message
- bauss (3/44) Apr 15 2020 It also says line 221. In which case he should be able to track
- p.shkadzko (3/15) Apr 15 2020 I should stop programming at night. Indeed it was the incorrect
I am quite confused by the following exception during dub build:dub build --single demo.d --compiler=ldc2 --forcePerforming "debug" build using ldc2 for x86_64. demo ~master: building configuration "application"... demo.d(221,20): Error: template object.get cannot deduce function from argument types !()(double[string], string, string), candidates are: C:\ldc2-1.20.0-windows-x64\bin\..\import\object.d(2645,10): get(K, V)(inout(V[K]) aa, K key, lazy inout(V) defaultValue) C:\ldc2-1.20.0-windows-x64\bin\..\import\object.d(2652,10): get(K, V)(inout(V[K])* aa, K key, lazy inout(V) defaultValue) The code that causes it: """ void main(string[] args) { double[string] scores = calculateScores("test.txt"); double score = scores.get("hello", 0.0); // <-- exception } """ It works if I just do "double score = scores["hello"];" Both dmd and ldc2 throw this exception. Is it a bug?
Apr 15 2020
On Wed, Apr 15, 2020 at 09:46:58PM +0000, p.shkadzko via Digitalmars-d-learn wrote:I am quite confused by the following exception during dub build:Are you sure the error is on the line you indicated? The error message claims that your argument types are (double[string], string, string), but your code clearly has argument types (double[sting], string, double). Are you sure dub is compiling the source file(s) you think it's compiling? Which source file(s) are shown by `dub -v`? T -- Leather is waterproof. Ever see a cow with an umbrella?dub build --single demo.d --compiler=ldc2 --forcePerforming "debug" build using ldc2 for x86_64. demo ~master: building configuration "application"... demo.d(221,20): Error: template object.get cannot deduce function from argument types !()(double[string], string, string), candidates are: C:\ldc2-1.20.0-windows-x64\bin\..\import\object.d(2645,10): get(K, V)(inout(V[K]) aa, K key, lazy inout(V) defaultValue) C:\ldc2-1.20.0-windows-x64\bin\..\import\object.d(2652,10): get(K, V)(inout(V[K])* aa, K key, lazy inout(V) defaultValue) The code that causes it: """ void main(string[] args) { double[string] scores = calculateScores("test.txt"); double score = scores.get("hello", 0.0); // <-- exception } """ It works if I just do "double score = scores["hello"];" Both dmd and ldc2 throw this exception. Is it a bug?
Apr 15 2020
On Wednesday, 15 April 2020 at 22:09:32 UTC, H. S. Teoh wrote:On Wed, Apr 15, 2020 at 09:46:58PM +0000, p.shkadzko via Digitalmars-d-learn wrote:It also says line 221. In which case he should be able to track it down to line 221 and see where the error is.I am quite confused by the following exception during dub build:Are you sure the error is on the line you indicated? The error message claims that your argument types are (double[string], string, string), but your code clearly has argument types (double[sting], string, double). Are you sure dub is compiling the source file(s) you think it's compiling? Which source file(s) are shown by `dub -v`? Tdub build --single demo.d --compiler=ldc2 --forcePerforming "debug" build using ldc2 for x86_64. demo ~master: building configuration "application"... demo.d(221,20): Error: template object.get cannot deduce function from argument types !()(double[string], string, string), candidates are: C:\ldc2-1.20.0-windows-x64\bin\..\import\object.d(2645,10): get(K, V)(inout(V[K]) aa, K key, lazy inout(V) defaultValue) C:\ldc2-1.20.0-windows-x64\bin\..\import\object.d(2652,10): get(K, V)(inout(V[K])* aa, K key, lazy inout(V) defaultValue) The code that causes it: """ void main(string[] args) { double[string] scores = calculateScores("test.txt"); double score = scores.get("hello", 0.0); // <-- exception } """ It works if I just do "double score = scores["hello"];" Both dmd and ldc2 throw this exception. Is it a bug?
Apr 15 2020
On Wednesday, 15 April 2020 at 22:09:32 UTC, H. S. Teoh wrote:On Wed, Apr 15, 2020 at 09:46:58PM +0000, p.shkadzko via Digitalmars-d-learn wrote:I should stop programming at night. Indeed it was the incorrect .get("a", "NULL") instead of .get("a", 0.0), sigh. Sorry guys.[...]Are you sure the error is on the line you indicated? The error message claims that your argument types are (double[string], string, string), but your code clearly has argument types (double[sting], string, double). Are you sure dub is compiling the source file(s) you think it's compiling? Which source file(s) are shown by `dub -v`? T
Apr 15 2020