Riješeno: niz u int

Posljednje ažuriranje: 09/11/2023

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.

Slični postovi: