Oppimateriaalin copyright © 2009 Arto Wikla. Tämän oppimateriaalin käyttö on sallittu vain yksityishenkilöille opiskelutarkoituksissa. Materiaalin käyttö muihin tarkoituksiin, kuten kaupallisilla tai muilla kursseilla, on kielletty.
(Muutettu viimeksi 18.3.2009)

Sulkeumaesimerkki

Sulkeuma (closure)

def eka(p: => Unit) {
  var x ="olen ekan x"
  println("--- eka alkaa ---")
  p   // tokan paikalliset eivät näy tänne, mutta sulkeuma
      // käydään suorittamassa kutsukohdan ympäristössä
  println(x)
  println("--- eka päättyy ---")
}

def toka {
  println("--- toka alkaa ---")
  var x ="olen tokan x"
  eka({println(x); x = "tokan x on muutettu!"}) // sulkeuma parametrina
  println(x)                                    // viittauksia paikallisiin
  println("--- toka päättyy ---")
}

// pääohjelma:
toka

Ohjelma tulostaa:
--- toka alkaa ---
--- eka alkaa ---
olen tokan x
olen ekan x
--- eka päättyy ---
tokan x on muutettu!
--- toka päättyy ---


Takaisin sisältösivulle.