diff runtime/doc/eval.txt @ 20649:1fa0ace0ba65 v8.2.0878

patch 8.2.0878: no reduce() function Commit: https://github.com/vim/vim/commit/85629985b71035608a37ba3bde86968481490d46 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Jun 1 18:39:20 2020 +0200 patch 8.2.0878: no reduce() function Problem: No reduce() function. Solution: Add a reduce() function. (closes https://github.com/vim/vim/issues/5481)
author Bram Moolenaar <Bram@vim.org>
date Mon, 01 Jun 2020 18:45:03 +0200
parents 8a2b86a39ef4
children 6ff992bf4c82
line wrap: on
line diff
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -2679,6 +2679,8 @@ readdir({dir} [, {expr}])	List	file name
 readdirex({dir} [, {expr}])	List	file info in {dir} selected by {expr}
 readfile({fname} [, {type} [, {max}]])
 				List	get list of lines from file {fname}
+reduce({object}, {func} [, {initial}])
+				any	reduce {object} using {func}
 reg_executing()			String	get the executing register name
 reg_recording()			String	get the recording register name
 reltime([{start} [, {end}]])	List	get time value
@@ -7965,6 +7967,26 @@ readfile({fname} [, {type} [, {max}]])
 		Can also be used as a |method|: >
 			GetFileName()->readfile()
 
+reduce({object}, {func} [, {initial}])			*reduce()* *E998*
+		{func} is called for every item in {object}, which can be a
+		|List| or a |Blob|.  {func} is called with two arguments: the
+		result so far and current item.  After processing all items
+		the result is returned.
+
+		{initial} is the initial result.  When omitted, the first item
+		in {object} is used and {func} is first called for the second
+		item.  If {initial} is not given and {object} is empty no
+		result can be computed, an E998 error is given.
+
+		Examples: >
+			echo reduce([1, 3, 5], { acc, val -> acc + val })
+			echo reduce(['x', 'y'], { acc, val -> acc .. val }, 'a')
+			echo reduce(0z1122, { acc, val -> 2 * acc + val })
+<
+		Can also be used as a |method|: >
+			echo mylist->reduce({ acc, val -> acc + val }, 0)
+
+
 reg_executing()						*reg_executing()*
 		Returns the single letter name of the register being executed.
 		Returns an empty string when no register is being executed.