Ruby Array Filter Map

Filter map do foo bar baz foo next unless bar bar.
Ruby array filter map. This comes in pretty handy for creating mapped arrays in a simpler way. 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. But the missing operation was intersection which has another hard to remember short version. The enumerable mixin provides collection classes with several traversal and searching methods and with the ability to sort.
I had a use case to do map on an enumerable with 1 level flattening while skipping nil values. 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. I had to chose to do either of the following. There are convenient enumerable flat map and enumerable filter map methods but the problem is that they cannot be used at the same time.
This is called tautology and when writing code it should be avoided at all times. As you see filter map creates a new array after first filtering desired results and then maps to get expected array. Ruby 2 7 has added enumerable filter map as a shorthand for filter map in a single call. Ruby 2 6 introduced array union difference methods to match the more succinct equivalents of array and array.
In other words do not repeat yourself twice. 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. 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. The class must provide a method each which yields successive members of the collection.
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. Alfonsojimenez wants to merge 1 commit into ruby.