Sigurna stvar! Evo opsežnog članka o pretvaranju niza u cijeli broj u Haskell-u:
Rad sa tipovima podataka je osnovni dio programiranja. U jeziku visokog nivoa, statički otkucanom kao što je Haskell, ove operacije ponekad mogu biti pomalo neintuitivne. Naš fokus danas je situacija sa kojom se često susrećemo: pretvaranje a String na Int u Haskell-u.
U dinamički kucanom jeziku, možda ćete moći da se izvučete koristeći string kao int naizmjenično. Ali zbog prirode Haskell-a kao statički tipiziranog jezika, prvo moramo izvršiti konverziju tipa. Udubimo se u rješenje ovog scenarija.
Biblioteka za konverziju
Haskell's Text.Read biblioteka pruža nam funkciju pročitajMožda što je odlično za naše potrebe. Funkcija će pokušati raščlaniti dati niz u traženi tip. Ako uspije, vratit će samo vrijednost, ako ne uspije, vratit će ništa.
import Text.Read (readMaybe) convert :: String -> Maybe Int convert str = readMaybe str :: Maybe Int
Detalji procesa konverzije
U gornjem isječku koda, funkcija convert uzima string kao ulaz. Koristeći pročitajMožda funkcija, pokušava da konvertuje taj niz u cijeli broj. Potpis tipa `Možda Int` označava da će ova funkcija vratiti ili Just Int (ako je konverzija uspješna) ili Ništa, ako konverzija ne uspije. Ovo je siguran i poželjan način za rukovanje ovom operacijom.
Opet, pogledajmo još jednu pogodnu funkciju koju imamo na raspolaganju. Ova funkcija ne samo da pretvara string u cijeli broj, već također daje zadanu vrijednost ako konverzija ne uspije – funkciju `fromMaybe`.
Pretvaranje stringa u Int sa zadanom vrijednošću
Pretpostavimo sada da ne želimo da naša funkcija vrati Maybe Int, već samo Int. U tom slučaju možemo dodati zadanu vrijednost našoj funkciji konverzije.
import Data.Maybe (fromMaybe) convertDefault :: String -> Int convertDefault str = fromMaybe 0 (readMaybe str)
U gornjem kodu, `fromMaybe` uzima dva argumenta: zadanu vrijednost i možda vrijednost. Ako je vrijednost Možda ništa, `fromMaybe` vraća zadanu vrijednost. U suprotnom, odmotava vrijednost Just i vraća je.
Kao što možete vidjeti, Haskell biblioteke nude sveobuhvatnu funkcionalnost za pretvaranje nizova u cijele brojeve. Na osnovu zahtjeva vaše aplikacije, možete odabrati jednu metodu u odnosu na drugu, uzimajući u obzir faktore kao što su rukovanje greškama, performanse i zadane povratne vrijednosti.
koristeći Text.Read i Data.Možda biblioteke, možete transformirati nizove u cijele brojeve, čime ćete iskoristiti robusni sistem tipova Haskell-a bez ugrožavanja sigurnosti ili efikasnosti. Bilo da odaberete da koristite `readMaybe` ili `fromMaybe`, uvijek možete razmotriti mogućnost neuspjeha zbog lošeg unosa i zaštititi se od toga u skladu s tim. Tu blista snaga Haskell-a kao statički otkucanog jezika.