Oppimateriaalin copyright © 2011 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 9.3.2011)

Sulkeumaesimerkki Scalalla

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 funktioliteraalina
  println(x)                                    // viittauksia paikallisiin tunnuksiin
  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.