Ernie Rael wrote:
> >>>> In vim9.txt there's
> >>>>
> >>>> The key type can be string, number, bool or float.=C2=A0 Other types r=
> es> ult in an
> >>>> error.=C2=A0 A number can be given with and without the []:
> >>>>
> >>>> Don't know if the following shows a bug in implementation or documenta=
> ti> on.
> >>>> The two dictionaries are not equal.
> >>>>
> >>>> =C2=A0=C2=A0=C2=A0 vim9script
> >>>>
> >>>> =C2=A0=C2=A0=C2=A0 var d1 =3D {[000123]: 'foo'}
> >>>> =C2=A0=C2=A0=C2=A0 echo d1
> >>>> =C2=A0=C2=A0=C2=A0 ### output {'123': 'foo'}
> >>>>
> >>>> =C2=A0=C2=A0=C2=A0 var d2 =3D {000123: 'foo'}
> >>>> =C2=A0=C2=A0=C2=A0 echo d2
> >>>> =C2=A0=C2=A0=C2=A0 ### output {'000123': 'foo'}
> >>>>
> >>>> =C2=A0=C2=A0=C2=A0 if d1 =3D=3D d2
> >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 echo 'EQUAL'
> >>>> =C2=A0=C2=A0=C2=A0 else
> >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 echo 'NOT EQUAL'
> >>>> =C2=A0=C2=A0=C2=A0 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 hel=
> p
> >>> 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.
This should be clearer:
The key type can be string, number, bool or float. Other types result in an
error. Without using [] the value is used as a string, keeping leading zeros.
An expression given with [] is evaluated and then converted to a string.
Leading zeros will then be dropped: >
var dict = {000123: 'without', [000456]: 'with'}
echo dict
{'456': 'with', '000123': 'without'}
--
hundred-and-one symptoms of being an internet addict:
91. It's Saturday afternoon in the middle of May and you
are on computer.
/// Bram Moolenaar -- [email protected] -- 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_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/20220428180933.893C51C16CB%40moolenaar.net.