Invocación de Procs y Lambdas

  1. Procs y lambdas no son métodos: son objetos
  2. Si f es un Proc no podemos invocar f como si fuera un método pero si que podemos invocar métodos (como call) en f
    f = Proc.new {|x,y| 1.0/(1.0/x + 1.0/y) }
    z = f.call(x,y)
    
  3. Se redefine el operador de acceso a arrays para que funcione como call
    z = f[x,y]
    
  4. En Ruby 1.9 se pueden prefijar los paréntesis con un punto:
    z = f.(x,y)
    
    No se trata de un operador, sino de syntactic sugar13.1. Puede utilizarse sobre cualquier objeto que disponga de un método call

Casiano Rodriguez León 2015-06-18