Next Previous Contents

23. <3.3.2.1>: Blocks for håndtering av ressurser

Minne-håndtering i Ruby ordnes via garbage collection, men en del andre ressurser krever eksplisitt lukking. Åpne filer, database-tilkoblinger og andre ressurser som tar opp mer enn minne, har det bedre med en eksplisitt lukking. Men slikt glemmer man lett...

  1| # Hent filnavn fra kommandolinjen.
  2| filnavn = ARGV[0]
  3| 
  4| # Gamle måten.
  5| fil = File.open( filnavn, "r" )
  6| linjenummer = 0
  7| fil.readlines.each{ |linje|
  8|   linjenummer +=1
  9|   print "#{linjenummer}: #{linje}" 
 10| }
 11| fil.close   # Lukker filen eksplisitt
 12| 
 13| # Bruk block til ressurs styring.
 14| File.open( filnavn, "r") { |fil|
 15|   linjenummer = 0
 16|   fil.readlines.each{ |linje|
 17|     linjenummer += 1
 18|     print "#{linjenummer}>: #{linje}" 
 19|   }
 20| } 
 21| # File.open lukker filen etter å ha  kjørt koden i blocken.


Next Previous Contents