supe por heckle que¿Cómo se comporta foo (& nil) de forma diferente que foo (& "not a proc")?
[1, 2, 3].each(&nil)
no causa ningún error - simplemente devuelve un enumerador.
Por el contrario,
[1, 2, 3].each(&"")
plantea
TypeError: wrong argument type String (expected Proc)
Además, &nil
causas block_given? para volver falsa
def block_given_tester
if block_given?
puts "Block given"
else
puts "Block not given"
end
end
block_given_tester(&nil) # => Block not given
No es porque NilClass
implementa to_proc
- Revisé la RDoc.
puedo entender por qué que sería bueno tener &nil
, pero no estoy seguro de cómo se hace. ¿Es esta una de las maneras en que nil
tiene un comportamiento especial no compartido por otros objetos?
Supongo que está buscando en una de las 1.8 sucursales no en una de las 1.9 sucursales. –
Sí, eso es de Ruby 1.8, ya que es el código que tengo disponible. Ahora estoy descargando el código de Ruby 1.9.2 para ver si algo ha cambiado. –
He editado mi respuesta para Ruby 1.9.2. –