Re: maps string question

Anthony Howe <[email protected]>
Newsgroups gmane.comp.lang.erlang.general
Organization SnertSoft
Message-ID <[email protected]>
On 2021-10-13 17:05, Java House wrote:
> Hello
> I am having a problem with maps and strings as keys.
> My understanding that the the two string formats "string" and <<"string">>
> are identical but as you can see from the transcript bellow maps does not

They are identical in content, but not in structure / type.

Using a list-string as a key will be different from using a binary-string.  You
will need to convert depending which key type you use.  Using a mix of
list-string and binary-string type as map keys will probably yield confusing
results.

As I understand binary-strings (more like C-string) are better than list-strings
and I would key on binary-string normally.

> Eshell V12.0  (abort with ^G)
> 1> Key1 = "key1".
> "key1"
> 2>
> 2> Key11 = <<"key1">>.
> <<"key1">>
> 3>
> 3> string:equal(Key1, Key11).
> true
> 4>
> 4> Map = maps:new().
> #{}
> 5>
> 5> Map1 = maps:put("key1", {something}, Map).
> #{"key1" => {something}}
> 6>
> 6> maps:get(Key1, Map1).
> {something}
> 7>
> 7> maps:get(Key11, Map1).

Try

maps:get(binary_to_list(Key11), Map1).

> ** exception error: bad key: <<"key1">>
>      in function  maps:get/2
>         called as maps:get(<<"key1">>,#{"key1" => {something}})
>         *** argument 2: not a map
> 8>
> 8> maps:get("key1", Map1).
> {something}
> 9>
> 9> maps:get(<<"key1">>, Map1).
> ** exception error: bad key: <<"key1">>
>      in function  maps:get/2
>         called as maps:get(<<"key1">>,#{"key1" => {something}})
>         *** argument 2: not a map
> 10>
> 


-- 
Anthony C Howe         	                                       SnertSoft
[email protected]     Twitter: SirWumpus            BarricadeMX & Milters
http://snert.com/    http://nanozen.snert.com/     http://snertsoft.com/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.