vim-patch:8.2.1969: Vim9: map() may change the list or dict item type

Problem:    Vim9: map() may change the list or dict item type.
Solution:   Add mapnew().

ea696852e7

Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
zeertzjq
2023-08-17 09:43:00 +08:00
parent 22d9338afc
commit 8cbb2477cf
8 changed files with 198 additions and 61 deletions

View File

@@ -6053,6 +6053,8 @@ M.funcs = {
{expr1} must be a |List|, |Blob| or |Dictionary|.
Replace each item in {expr1} with the result of evaluating
{expr2}. For a |Blob| each byte is replaced.
If the item type changes you may want to use |mapnew()| to
create a new List or Dictionary.
{expr2} must be a |string| or |Funcref|.
@@ -6215,6 +6217,18 @@ M.funcs = {
params = { { 'name', 'string' }, { 'mode', 'string' }, { 'abbr', 'any' } },
signature = 'mapcheck({name} [, {mode} [, {abbr}]])',
},
mapnew = {
args = 2,
base = 1,
desc = [=[
Like |map()| but instead of replacing items in {expr1} a new
List or Dictionary is created and returned. {expr1} remains
unchanged.
]=],
name = 'mapnew',
params = { { 'expr1', 'any' }, { 'expr2', 'any' } },
signature = 'mapnew({expr1}, {expr2})',
},
mapset = {
args = 3,
base = 1,