2011-11-20 8 views

risposta

9

Una chiusura può modificare gli oggetti nel suo campo di applicazione, in questo modo:

require 'benchmark' 

a = nil 
puts Benchmark.measure { a = "a" * 1_000_000 } 
puts a.size 

# => 0.000000 0.000000 0.000000 ( 0.004865) 
# => 1000000 
+0

Quindi le chiusure hanno un puntatore scrivibile su ciò che viene loro passato? E le chiusure possono modificare anche @a e @@ a, assumendo che queste siano definite al di fuori della chiusura. – justingordon

+0

@justingordon: Sì, possono. – Miikka

+3

Yuck. Vorrei davvero che Benchmark restituisse qualcosa come: "[tempo, risultato]". Quindi potresti: 'time, a = Benchmark.measure {...}' – devth

Problemi correlati