ho scoperto da heckle cheIn che modo foo (& nil) si comporta diversamente da foo (& "not a proc")?
[1, 2, 3].each(&nil)
non causa gli eventuali errori - semplicemente restituisce un enumeratore.
Al contrario,
[1, 2, 3].each(&"")
solleva
TypeError: wrong argument type String (expected Proc)
Inoltre, &nil
cause block_given? per restituire false
def block_given_tester
if block_given?
puts "Block given"
else
puts "Block not given"
end
end
block_given_tester(&nil) # => Block not given
Non è perché NilClass
implementa to_proc
- ho controllato il RDoc.
riesco a capire il motivo per cui sarebbe bello avere &nil
, ma non sono sicuro di come si fa. Questo è solo uno dei modi in cui nil
ha un comportamento speciale non condiviso da altri oggetti?
Suppongo che tu stia guardando uno dei rami 1.8 non uno dei rami 1.9. –
Sì, quello proviene da Ruby 1.8, poiché è il codice che ho a disposizione. Ora sto scaricando il codice per Ruby 1.9.2 per vedere se qualcosa è cambiato. –
Ho modificato la mia risposta per Ruby 1.9.2. –