With rubyconf 2019 behind us and ruby 2 7 releasing this december it s the perfect time to go through what are the new features in the newest 2 x ruby version and also the last release before 3 0.
Ruby array filter map.
The enumerable mixin provides collection classes with several traversal and searching methods and with the ability to sort.
Ruby 2 7 has added enumerable filter map as a shorthand for filter map in a single call.
There are convenient enumerable flat map and enumerable filter map methods but the problem is that they cannot be used at the same time.
In other words do not repeat yourself twice.
Adding enumerable filter map 78 1 conversation 0 commits 1 checks 0 files changed 4.
But the missing operation was intersection which has another hard to remember short version.
By declan meehan get the most out of ruby by using the select map and reduce methods together image from kgntechnologiesyou should absolutely never ever repeat yourself when writing code.
This comes in pretty handy for creating mapped arrays in a simpler way.
Filter map do foo bar baz foo next unless bar bar.
If max min or sort is used the objects in the collection must also implement a meaningful operator as these methods rely on an ordering between members of the collection.
As you see filter map creates a new array after first filtering desired results and then maps to get expected array.
Alfonsojimenez wants to merge 1 commit into ruby.
This is called tautology and when writing code it should be avoided at all times.
I had to chose to do either of the following.
To be clear do not write something which has been explained already.
If this reasoning makes any sense to anyone else then i believe that the behaviour shown by filter map as is is correct and should be retained.
I can not say much about array compact but from the name filter map alone i would assume that first a filter is used as a positive select and then the map is applied.
Ruby 2 6 introduced array union difference methods to match the more succinct equivalents of array and array.