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 19.3.2009)

Arvojen käyttötapojen luokittelua

Yksi ohjelmointikieliä erottava ominaisuus on arvojen sallitut käyttötavat: voidaanko arvo (a) sijoittaa muuttujaan, (b) antaa parametrina ja (c) saada aliohjelman paluuarvona. Useimmissa kielissä kokonaisluvuille kaikki tämä on mahdollista, Läheskään kaikissa kielissä aliohjelmaa ei voida antaa parametrina. Hyvin harvoissa jonkin ohjelmakohdan osoite voidaan antaa parametrina, jne., jne.

Arvoja joille kaikki kolme ovat mahdollisia, kutsutaan "ensimmäisen luokan" ("first-class") arvoiksi. "Toisen luokan" ("second-class") arvoja voidaan välittää parametreina ja sijoittaa muuttujaan. "Kolmannen luokan" ("third-class") arvoille vain sijoitus on luvallinen.

Oppikirjan ulkopuolelta: On myös kiinnostavaa havaita, miten esim. Scala sallii funktioille "ensimmäisen luokan" statuksen lisäksi myös "funktioliteraalit":

def muotoile(muotoilija: String => String, sanat: List[String]) =
  for(val sana <- sanat)
     print(muotoilija(sana))

def huuda(x: String) = x.toUpperCase

val lista = List("hip ", "hurraa!")

// annetaan parametrina ensin nimetty funktio ja lista:
muotoile(huuda, lista)
println

// tulostus: HIP HURRAA!

// annetaan sitten parametrina funktioliteraali ja lista:
muotoile({x => x.replace('h', 'j')}, lista)
println

// tulostus: jip jurraa!

Esimerkkejä:


Takaisin sisältösivulle.