Underscore for Delphi
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
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