Discovering ruby #4
In the ruby koans I now came across array functions. One is collect
and I thought, this is map
, and the comment below said
'map' is another name for the 'collect' operation
Moving on, I noticed that filter
has different names too:
'find_all' is another name for the 'select' operation
So I need to hammer new names in my head and actually also map them and not forget that they are aliases for each other. Better or not, I can't say. I got used to filter
and map
.
map
can be:collect
filter
is:find_all
orselect
reduce
is:inject(start_value)
Iterators, yield
Somehow I have to say that the way iterators are used in ruby makes them seem way more simpler and intuitive to use than I know them from ES6.
def many_yields
yield(1)
yield(2)
end
many_yields { |item| result << item }
Maybe it's because the block syntax is so not-like-a-function. And inside the many_yields
method you can use block_given?
to find out you had been called with a block. Quite handy.
ensure
for a method
I have just seen this constructor for the first time, in the koans
def find_line(file_name)
file = open(file_name)
ensure
file.close if file
end
Wow, this is so cool, if we don't misuse it. Ensure that a certain block of code is always executed at the end of a function, no matter which execution path was taken.