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)

Arvojen käyttötapojen luokittelua

Yksi ohjelmointikieliä erottava ominaisuus on, millä tavoin eri tyyppisiä arvoja sallitaan käytettävän, voidaanko arvo
  1. sijoittaa muuttujaan
  2. välittää parametrina
  3. palauttaa funktion arvona
  4. [ilmaista literaalina]
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 a, b, ja c 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!")

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

// tulostus: HIP HURRAA!

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

// tulostus: jip jurraa!


Esimerkkejä:


Takaisin sisältösivulle.