> The help entry for has_key() says that the key must be a string. In
> legacy Vim script, however, this works fine:
> 
>     let dd = {42: '42', v:true:  'T', 3.14: '3.14'}
>     echo dd->has_key(42)
>     echo dd->has_key(v:true)
>     echo dd->has_key(3.14)
> 
> In Vim 9 script, the behavior is different:
> 
>     vim9script
>     const dd = {42: '42', true:  'T', [3.14]: '3.14'}
>     echo dd->has_key(42)     # OK
>     echo dd->has_key(v:true) # Error, must be string(v:true)
>     echo dd->has_key(3.14)   # Error, must be string(3.14)
> 
> This seems a bit inconsistent to me. I don't have a problem with Vim
> 9 script being different from legacy script, but I think that either all
> the three cases should raise an error, or none of them.
> 
> Besides, the documentation does not make it clear that implicit type
> casting may happen.

I'll add a note to the help.

In Vim9 script there is no automatic conversion to string, but an
exception is made for a number.  I don't recall the discussion, but I
think this was because it is rather common.  Perhaps not totally
consistent, but I don't want to change it now, it would cause obscure
problems.

-- 
A poem:                read aloud:

<> !*''#               Waka waka bang splat tick tick hash,
^"`$$-                 Caret quote back-tick dollar dollar dash,
!*=@$_                 Bang splat equal at dollar under-score,
%*<> ~#4               Percent splat waka waka tilde number four,
&[]../                 Ampersand bracket bracket dot dot slash,
|{,,SYSTEM HALTED      Vertical-bar curly-bracket comma comma CRASH.

Fred Bremmer and Steve Kroese (Calvin College & Seminary of Grand Rapids, MI.)

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_use+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_use/20220817123218.7A0F71C0B04%40moolenaar.net.

Reply via email to