eiro
1
hello,
i want to remove duplicates from my hdd so i wrote this code
which is a companion for `find ~ -type f -printf “%s %p\n”.
i tried to store the sizes as Int64 instead but now have this message
20 | (seen[size] ||= [] of String ).push(filename)
^-
Error: no overload matches ‘Hash(Int64, Array(String))#[]=’ with types Int32, Array(String)
as i’m very new to crystal, try to work around it. any help (or other feedback about the repo itself) is welcome
I’m guessing you tried to convert it to Int64 like this:
size,filename = l.split(" ",2)
size = size.to_i
( seen[size] ||= [] of String ).push(filename)
Play Link
The error you mentioned is because #to_i
convert to Int32
. The solution is to use #to_i64
:
size,filename = l.split(" ",2)
size = size.to_i64
( seen[size] ||= [] of String ).push(filename)
Play Link
However, I had some trouble figuring out what your question was, so please let me know (and clarify) if it doesn’t help.
@eiro Could you submit the failing code? Otherwise we don’t know what you tried (the code you posted works just fine).
1 Like
eiro
4
hello,
I’m guessing you tried to convert it to Int64 like this:
size,filename = l.split(" ",2)
size = size.to_i
( seen[size] ||= [] of String ).push(filename)
this is exactly what i did!
The error you mentioned is because #to_i
convert to Int32
. The solution is to use #to_i64
well … the message was somewhat explicit but i assumed that crystal
can infer the expected type because of the declaration of seen.
thanks a lot.
However, I had some trouble figuring out what your question was, so
please let me know (and clarify) if it doesn’t help.
i’m really sorry if i was confusing. your anwser fit the need perfectly.
regards,
marc
eiro
5
Hello Ary,
@eiro Could you submit the failing code? Otherwise we don’t know what
you tried (the code you posted works just fine).
next time, i’ll push a “failing” branch. promise :)
regards
marc