Programmeerimismaailmas on tavaline, kuid oluline ülesanne andmestikust konkreetsete elementide, näiteks stringi esimese tähe, eraldamine. Siin keskendume Haskellile, kaasaegsele, puhtalt funktsionaalsele programmeerimiskeelele, mis on tuntud oma kõrge modulaarsuse, rikkaliku funktsioonide komplekti ja tugeva tüübiohutuse poolest. Meie ülesanne on lihtne – otsi stringist esimene märk. Kuid enne sellesse sukeldumist on oluline mõista, et Haskelli stringid on lihtsalt märkide loendid. See tähendab, et me kasutame oma eesmärgi saavutamiseks nimekirja toimimise taktikat.
Pea funktsiooni kasutamine
Üks tuntud meetod stringi esimese märgi valimiseks on Haskelli natiivse pea funktsiooni kasutamine. Illustreerime seda näitega:
getFirstChar :: String -> Char getFirstChar = head
Selles näites kasutab funktsioon "getFirstChar" funktsiooni "head", mis ekstraheerib loendist esimese elemendi (meie puhul märgiloendist). Sisend on "String" ja tagastustüüp on "Char" – stringi esimene märk.
Koodeksi mõistmine
Põhjalikuma mõistmise huvides jagame selle samm-sammult lahti. Esiteks deklareerime funktsiooni "getFirstChar", mis võtab sisendiks tüübi "String" ja tagastab tüübi "Char". Seda määrab `getFirstChar :: String -> Char`.
Funktsiooni definitsioonis kasutame funktsiooni "head", mis on sisseehitatud Haskelli funktsioon, mida kasutatakse loendi esimese üksuse toomiseks.
Lisateavet pea funktsiooni kohta
Haskelli käsitsemisel, eriti loendite haldamisel, funktsioon "pea" ilmub sageli. Lühidalt, igal Haskelli loendil on kaks osa: pea ja saba. Funktsioon Head hangib loendi esimese elemendi (või pea).
Ettevaatlik tuleb olla ainult ühe asjaga: funktsiooni "pea" ei tohiks kasutada tühja loendi korral. Kui on, põhjustab see käitusaja tõrke.
Vigade käsitlemine ja "turvaline" teek
Kuigi sõna "pea" kasutamine nii, nagu me tegime, on lihtne, kaasnevad sellega siiski oma riskid. Nagu mainitud, põhjustab "head" tühjas loendis kutsumine vea. Siia siseneb "Turvaline" teek, mis pakub funktsioonide versioone, mis ei jookse erandlikul sisendil kokku ja võimaldavad turvalisemat Haskelli koodi.
import Safe (headMay) getFirstCharSafe :: String -> Maybe Char getFirstCharSafe = headMay
Kasutades teegi "Safe" funktsiooni "headMay", tagastab funktsioon "getFirstCharSafe" nüüd Maybe Chari, mis võib olla "Just Char", kui string pole tühi, või "Nothing", kui see on tühi.
Nende kontseptsioonidega saate stringidega enesekindlalt manipuleerida ja hankige Haskelli esimene tegelane, pidades silmas võimalikke erandeid ja nende käsitlemise viise. Loodetavasti aitab see teid teie Haskelli teekonnal. Head kodeerimist.