On 4/28/22 8:52 AM, Bram Moolenaar wrote:
Ernie Rael wrote:

In vim9.txt there's

The key type can be string, number, bool or float.  Other types res> ult in an
error.  A number can be given with and without the []:

Don't know if the following shows a bug in implementation or documentati> on.
The two dictionaries are not equal.

       vim9script

       var d1 = {[000123]: 'foo'}
       echo d1
       ### output {'123': 'foo'}

       var d2 = {000123: 'foo'}
       echo d2
       ### output {'000123': 'foo'}

       if d1 == d2
           echo 'EQUAL'
       else
           echo 'NOT EQUAL'
       endif
This is correct.  The key eventually is always a string.  If you use a
number and convert it to a string then leading zeros are dropped.  If
you use a string with leading zeros, they are kept.  This is in the help
below ":he E717".

E717 says

     You can use a Number, it will be converted
     ...Note that the String '04' and the Number 04 are different,
     since the Number will be converted to the String '4'.

According to that, in the example I started with, {000123: 'foo'}, the
number should be converted. But it is not being converted. Try

     vim9script
     echo {000123: 'foo'}
That is not a number but a string.  As you noticed before, using [expr]
does use 000123 as a number, then converts it to a string.
Using the {key: value} syntax the "key" part is always a string.

Using the {key: value} syntax the "key" part is always a string.

Isn't this doc in vim9.txt wrong (or at least highly misleading)

   The key type can be string, number, bool or float.  Other types
   result in an
   error.  A number can be given with and without the []: >
        var dict = {123: 'without', [456]: 'with'}
        echo dict
        {'456': 'with', '123': 'without'}

It is not the same "with and without"

At E717, where it is talking about "Dictionary creation", it says "Number will be converted to String". But that might be a legacy script thing and so out of my experience.

-ernie

--
--
You received this message from the "vim_dev" 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_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/606bdea9-c61c-a21d-05a4-1fedf4e02fc4%40raelity.com.

Raspunde prin e-mail lui