Skip to content

GDKsoftware/Underscore4d

Repository files navigation

Underscore4d

This project makes an effort to add functional algorithms that are available in most modern languages (JS, C#, C++) and native in functional languages, but are generally not available in Delphi yet. Spring4d adds a lot of this functionality for IEnumerable, but are still not available for builtin Delphi types like TList.

Underscore4d adds functions in the style of UnderscoreJS, using the _ namespace and passing both list/enumerable and the (anonymous) function to perform.

(Be aware that there's a performance penalty when using this library, as the supplied anonymous functions will not be inlined into the algorithm.)

UnderscoreJS Spring4d Delphi Underscore4d
each ForEach x
map T x x Map
map T,S OfType? x Map
reduce T Aggregate T x Reduce
reduce T,S x x Reduce
reduceRight x x
find First x Find*
find noexcept FirstOrDefault x FindOrDefault
filter Where x Filter
where
findWhere
reject
every All x Every
some Any
contains Contains Contains x
pluck
max T Max*
min T Min*
sortBy
groupBy
indexBy
countBy
shuffle
sample
toArray
size
partition
first [0] First
initial
last Last
rest
compact
flatten
without
union Union x Union
intersection IntersectWith x Intersection
difference x Difference
uniq Uniq
zip x Zip
unzip
object
chunk
indexOf
lastIndexOf
sortedIndex
findIndex
findLastIndex
range

*) will throw exception on failure

Extra functions

  • Join