reduce
returns first value in array when accumulator is
null
Array.reduce
as of Godot 4.4 will
use the first element in the array when the
accumulator is either undefined or explicitly set to
null
by the user, contrary to how
JavaScript, F#, and Python works. 1
This means that you cannot write a function to
pass to reduce
that would fold over a
list and return the best suitable match based on
some criteria or null
if none of those
elements are appropriate. This is because it could
keep picking an inappropriate result if one exists
at the front of the list. 2
If you are familiar with Haskell, another way of
thinking about it is that reduce
in
GDScript silently turns into foldl1
when Nothing
is passed to
foldl
as the initial value for the
accumulator. 3
This behavior is documented in the documentation
for reduce
,
this is because of how the accum
parameter works: 4
The method takes two arguments: the current value of
accum
and the current array element. Ifaccum
isnull
(as by default), the iteration will start from the second element, with the first one used as initial value ofaccum
.