Selvä juttu! Tässä on laaja artikkeli merkkijonon muuntamisesta kokonaisluvuksi Haskellissa:
Tietotyyppien parissa työskenteleminen on olennainen osa ohjelmointia. Korkeatasoisessa, staattisesti kirjoitetussa kielessä, kuten Haskell, nämä toiminnot voivat joskus olla hieman epäintuitiivisia. Keskitymme tänään yleisesti kohtaamaan tilanteeseen: muuntaminen a Merkkijono Int:hen Haskellissa.
Dynaamisesti kirjoitetussa kielessä voit ehkä päästä eroon käyttämästä merkkijonoa int-arvona. Mutta koska Haskell on staattisesti kirjoitettu kieli, meidän on ensin suoritettava tyyppimuunnos. Tarkastellaanpa tämän skenaarion ratkaisua.
Kääntymisen kirjasto
Haskellin Teksti.Lue kirjasto tarjoaa meille toiminnon lukea Ehkä mikä on hienoa tarkoituksiinmme. Funktio yrittää jäsentää annetun merkkijonon pyydettyyn tyyppiin. Jos se onnistuu, se palauttaa Just arvon, jos se epäonnistuu, se palauttaa Ei mitään.
import Text.Read (readMaybe) convert :: String -> Maybe Int convert str = readMaybe str :: Maybe Int
Muunnosprosessin tiedot
Yllä olevassa koodinpätkässä funktio convert ottaa syötteenä merkkijonon. Käyttämällä lukea Ehkä funktio, se yrittää muuntaa merkkijonon kokonaisluvuksi. Tyyppiallekirjoitus "Maybe Int" osoittaa, että tämä funktio palauttaa joko Just Int (jos muunnos onnistuu) tai Ei mitään, jos muunnos epäonnistuu. Tämä on turvallinen ja suositeltava tapa hoitaa tämä toimenpide.
Katsotaanpa jälleen toista käytettävissämme olevaa mukavuustoimintoa. Tämä funktio ei ainoastaan muunna merkkijonoa kokonaisluvuksi, vaan tarjoaa myös oletusarvon, jos muuntaminen epäonnistuu – "fromMaybe"-funktion.
Merkkijonon muuntaminen Int:ksi oletusarvolla
Oletetaan nyt, että emme halua funktiomme palauttavan Maybe Int, vaan vain Int. Siinä tapauksessa voimme lisätä oletusarvon muuntofunktioomme.
import Data.Maybe (fromMaybe) convertDefault :: String -> Int convertDefault str = fromMaybe 0 (readMaybe str)
Yllä olevassa koodissa "fromMaybe" ottaa kaksi argumenttia: oletusarvon ja Maybe-arvon. Jos Ehkä-arvo on Ei mitään, "fromMaybe" palauttaa oletusarvon. Muussa tapauksessa se avaa Just-arvon ja palauttaa sen.
Kuten näette, Haskell kirjastot tarjoavat kattavat toiminnot merkkijonojen muuntamiseen kokonaisluvuiksi. Sovellusvaatimustesi perusteella voit valita yhden menetelmän toisen sijaan ottaen huomioon tekijät, kuten virheiden käsittelyn, suorituskyvyn ja oletusarvot.
Käyttäen Teksti.Lue ja Data.Ehkä kirjastot, voit muuntaa merkkijonot kokonaisluvuiksi, jolloin hyödynnät Haskellin vankkaa tyyppijärjestelmää vaarantamatta turvallisuutta tai tehokkuutta. Valitsetpa sitten "readMaybe" tai "fromMaybe", voit aina harkita epäonnistumisen mahdollisuutta huonosta syötteestä ja suojautua siltä vastaavasti. Tässä näkyy Haskellin vahvuus staattisesti kirjoitettuna kielenä.