C:ssä (ja Javassa yms.) kaikki "funktiot" sijaitsevat samalla tasolla; kielen aliohjelmarakenne on litteä.
Scalalla voidaan ohjelmoida seuraavaan tyyliin:
def swappauttelua(a:Int, b:Int) = {
var x = a
var y = b
def swap() { // tyhjät sulkeet eivät välttämättömät
val apu = x
x = y
y = apu
}
println(x + " " + y)
swap() // tyhjät sulkeet eivät välttämättömät
println(x + " " + y)
}
swappauttelua(1,2)
Vastaava sisäkkäisyys on mahdollista myös
lohkoissa (vrt. Javaan, joka sallii lohkot, mutta vaatii silti
metodin sisällä muuttujanimien yksikäsitteisyyden):
var i=1; var j=2; var k=3;
println(i + " " + j + " " + k)
{var i=10; var j=20; // uudelleenmääritellään i ja j
println(i + " " + j + " " + k)
{var i=100 // uudelleenmääritellään i
println(i + " " + j + " " + k)
}
println(i + " " + j + " " + k)
}
println(i + " " + j + " " + k)
Tulostus:
1 2 3 10 20 3 100 20 3 10 20 3 1 2 3
Takaisin sisältösivulle.