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: tokaOhjelma tulostaa:
--- toka alkaa --- --- eka alkaa --- olen tokan x olen ekan x --- eka päättyy --- tokan x on muutettu! --- toka päättyy ---