A teljes Julia-kurzus során úgy kell majd kezelned a megoldásodat, mintha egy-egy kis könyvtár lenne, azaz függvényeket, típusokat és hasonlókat kell definiálnod, amelyeket aztán egy tesztkészlet futtat le. Épp ezért a legelső fogalomként a nevesített függvényekkel ismerkedünk meg.
A Julia egy dinamikus, erősen típusos programozási nyelv. A programozási stílusa főként funkcionális, bár nagyobb rugalmasságot kínál, mint például a Haskell.
Nem kell előre deklarálnod a változókat. Egyszerűen rendelj értéket egy megfelelő névhez:
julia> myvar = 42 # an integer
42
julia> name = "Maria" # strings are surrounded by double-quotes ""
"Maria"
Ha egy értékre az egész program során szükség van, de nem várható, hogy megváltozik, a legjobb, ha konstansként jelölöd meg.
Ha az értékadás elé a const kulcsszót írod, a fordító hatékonyabb kódot tud generálni, mint egy változó esetében.
A konstansok abban is segítenek, hogy megvédjenek a kódolási hibáktól.
Ha véletlenül megpróbálod megváltoztatni a const értékét, figyelmeztetést kapsz:
julia> const answer = 42
42
julia> answer = 24
WARNING: redefinition of constant Main.answer. This may fail, cause incorrect answers, or produce other errors.
24
Vedd figyelembe, hogy egy const csak a függvényeken kívül deklarálható.
Ez jellemzően a *.jl fájl elején, a függvénydefiníciók előtt szokott szerepelni.
Ezek megegyeznek számos más nyelvben megszokottakkal:
2 + 3 # 5 (addition)
2 - 3 # -1 (subtraction)
2 * 3 # 6 (multiplication)
8 / 2 # 4.0 (division with floating-point result)
8 % 3 # 2 (remainder)
Két gyakori módja van annak, hogy nevesített függvényt definiáljunk Juliában:
A function kulcsszó használatával
function muladd(x, y, z)
x * y + z
end
A 4 szóközös behúzás az olvashatóság kedvéért szokásos, de a fordító figyelmen kívül hagyja.
Az end kulcsszó elengedhetetlen.
Megjegyezzük, hogy írhattuk volna return x * y + z alakban is.
A Julia függvényei azonban mindig az utolsó kiértékelt kifejezést adják vissza, így a return kulcsszó elhagyható.
Sok programozó mégis szívesebben kiírja, hogy egyértelműbb legyen a szándéka.
Az „értékadó alak” használatával
muladd(x, y, z) = x * y + z
Ezt leggyakrabban tömör, egyetlen kifejezésből álló függvények írására használják.
Az értékadó alakban soha nem használunk return kulcsszót.
A két alak egyenértékű, és pontosan ugyanúgy használjuk őket, ezért válaszd azt, amelyik olvashatóbb.
Egy függvény meghívásához meg kell adnod a nevét, és minden paraméteréhez át kell adnod egy-egy argumentumot:
# invoking a function
muladd(10, 5, 1)
# and of course you can invoke a function within the body of another function:
square_plus_one(x) = muladd(x, x, 1)
Sok más nyelvhez hasonlóan a Julia megköveteli, hogy a nevek (változóké, függvényeké és sok másé) betűvel kezdődjenek, amit betűk, számjegyek és aláhúzásjelek tetszőleges kombinációja követhet.
A szokás szerint a változók, konstansok és függvények neve kisbetűs, és az aláhúzásjeleket ésszerű minimumon tartják.
Ebben a feladatban olyan kódot írsz majd, amely segít egy remek lasagnét elkészíteni a kedvenc szakácskönyvedből.
Négy részfeladat vár rád, mindegyik a lasagne elkészítésével eltöltött időhöz kapcsolódik.
Definiáld az expected_bake_time konstanst, amely visszaadja, hány percig kell a lasagnét a sütőben sütni.
A szakácskönyv szerint a lasagnének összesen 60 percet kell a sütőben töltenie.
julia> expected_bake_time
60
Definiáld a preparation_time függvényt, amely argumentumként a lasagnéba rakott rétegek számát kapja, és visszaadja, hány percet töltöttél a lasagne előkészítésével, feltételezve, hogy minden réteg elkészítése 2 percet vesz igénybe.
julia> preparation_time(4)
8
Definiáld a remaining_time függvényt, amely paraméterként azt a percet kapja, amennyi ideje a lasagne már a sütőben van, és visszaadja, hány percig kell még a lasagnének a sütőben maradnia.
julia> remaining_time(50)
10
Definiáld a total_working_time függvényt, amely két argumentumot kap: az első a lasagnéba rakott rétegek száma, a második pedig az, hogy hány perce van a lasagne a sütőben.
A függvény adja vissza, hogy összesen hány percet dolgoztál a lasagne elkészítésén, ami az előkészítési idő és a lasagnének a sütőben eddig eltöltött idejének az összege.
julia> total_working_time(3, 20)
26
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Julia nyelvet 35 fogalom128 feladat segítségével, valódi emberi mentorálással, mindez ingyen.