Ratkaistu: hanki ensimmäinen merkki merkkijonosta

Viimeisin päivitys: 09/11/2023

Ohjelmoinnin maailmassa yleinen mutta merkittävä tehtävä on poimia tietojoukosta tiettyjä elementtejä, kuten merkkijonon ensimmäinen merkki. Tässä keskitymme Haskelliin, moderniin, puhtaasti toimivaan ohjelmointikieleen, joka tunnetaan korkeasta modulaarisuudestaan, runsaasta ominaisuuksistaan ​​ja vahvasta tyyppiturvallisuudestaan. Tehtävämme on yksinkertainen – hae ensimmäinen merkki merkkijonosta. Mutta ennen kuin sukeltaamme siihen, on tärkeää ymmärtää, että Haskellin merkkijonot ovat yksinkertaisesti merkkiluetteloita. Tämä tarkoittaa, että käytämme listatoimintataktiikoita tavoitteemme saavuttamiseksi.

Päätoiminnon käyttäminen

Yksi tunnettu menetelmä merkkijonon ensimmäisen merkin valitsemiseksi on käyttää Haskellin natiivia "head"-funktiota. Havainnollistetaan tätä esimerkillä:

getFirstChar :: String -> Char
getFirstChar = head

Tässä esimerkissä funktio "getFirstChar" käyttää "head"-funktiota, joka poimii ensimmäisen elementin luettelosta (tapauksessamme merkkiluettelosta). Syöte on "String" ja palautustyyppi on "Char" - merkkijonon ensimmäinen merkki.

Koodin ymmärtäminen

Puretaan se vaihe vaiheelta syvällisemmän ymmärryksen saamiseksi. Ensin määritetään funktio "getFirstChar", joka ottaa syötteeksi "String"-tyypin ja palauttaa "Char"-tyypin. Tämä määritellään parametrilla "getFirstChar :: String -> Char".

Funktiomäärittelyssä käytämme `head`-funktiota, sisäänrakennettua Haskell-funktiota, jota käytetään hakemaan luettelon ensimmäinen kohde.

Lisää päätoiminnosta

Käsitellessäsi Haskellia, erityisesti kun hallinnoit luetteloita, 'head'-toiminto näkyy usein. Lyhyesti sanottuna missä tahansa Haskellin luettelossa on kaksi osaa: pää ja häntä. Head-funktio hakee luettelon ensimmäisen elementin (tai otsikon).

On vain yksi asia, joka on varottava: "head"-toimintoa ei saa käyttää tyhjässä luettelossa. Jos on, se johtaa ajonaikaiseen virheeseen.

Virheenkäsittely ja "Turvallinen" kirjasto

Vaikka "pään" käyttäminen kuten teimme, on yksinkertaista, siihen liittyy riskejä. Kuten mainittiin, "head" kutsuminen tyhjässä luettelossa johtaa virheeseen. Tämä tulee "Turvallinen" kirjasto, joka tarjoaa versioita toiminnoista, jotka eivät kaatu poikkeuksellisen syötteen ja mahdollistavat turvallisemman Haskell-koodin.

import Safe (headMay)

getFirstCharSafe :: String -> Maybe Char
getFirstCharSafe = headMay

Käyttämällä "headMay" "Safe"-kirjastosta, funktio "getFirstCharSafe" palauttaa nyt Maybe Char, joka voi olla "Just Char", jos merkkijono ei ole tyhjä, tai "Nothing", jos se on tyhjä.

Näillä käsitteillä osaat luottavaisesti manipuloida jouseja ja noutaa Haskellin ensimmäinen hahmo pitäen mielessä mahdolliset poikkeukset ja tavat käsitellä niitä. Toivottavasti tämä auttaa sinua Haskell-matkallasi. Hyvää koodausta.

Related viestiä: