Haskell: Konvertieren von Int in String


198

Ich weiß, dass Sie a Stringin eine Zahl umwandeln können mit read:

Prelude> read "3" :: Int
3
Prelude> read "3" :: Double 
3.0

Aber wie erfassen Sie die StringDarstellung eines IntWertes?

Antworten:


286

Das Gegenteil von readist show.

Prelude> show 3
"3"

Prelude> read $ show 3 :: Int
3

38
@Lega: Möglicherweise finden Sie dies nützlich: haskell.org/hoogle/?hoogle=Int+-%3E+String .
— Kennytm

3
@ KennyTM Viele Leute werden diesen Link nützlich finden! Ein Link allein ist +1, aber für die Darstellung, wie man ihn benutzt ... Das ist +10 Danke :)
— AdR

Beachten Sie, dass einige Organisationen / Standards die Verwendung von "show" aufgrund seines extremen Polymorphismus dringend empfehlen. Eine typspezifische Funktion (oder im schlimmsten Fall ein Wrapper um Show) wäre hilfreich.
— Jon Watte

@ JonWatte "Könnte", nicht "würde". Auf der Ebene der Allgemeinheit dieser Frage halte ich Ihren Vorschlag nicht für umsetzbar.
— Duplode

Gibt es eine Möglichkeit, dies manuell zu tun, ohne Systemfunktionen zu verwenden?
— Lesolorzanov

4

Ein Beispiel basierend auf Chucks Antwort:

myIntToStr :: Int -> String
myIntToStr x
    | x < 3     = show x ++ " is less than three"
    | otherwise = "normal"

Beachten Sie, dass ohne die showdritte Zeile nicht kompiliert wird.


4

Jeder, der gerade mit Haskell anfängt und versucht, ein Int zu drucken, verwendet:

module Lib
    ( someFunc
    ) where

someFunc :: IO ()
x = 123
someFunc = putStrLn (show x)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.