Calling/applying lambda vs. function call – the syntax in Ruby is different. Why?

Regular Ruby method calls use () not curly braces which are for blocks. If you don’t like [] for calling a lambda, you can always use the call method.

Example:

>> by_two = lambda { |x| x * 2 } #=> #<Proc:0x0000000101304588@(irb):1>
>> by_two[5] #=> 10
>> by_two.call(5) #=> 10

Edit

In newer version of Ruby also:

>> by_two.(5) #=> 10

As to why you can’t just do by_two(5), when Ruby sees a bareword it first tries to resolve it as a local variable and if that fails as a method.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)