Haskell: การแปลง Int เป็น String


199

ฉันรู้ว่าคุณสามารถแปลงเป็นStringตัวเลขด้วยread:

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

แต่คุณจะนำStringเสนอIntคุณค่าได้อย่างไร

คำตอบ:


286

ตรงข้ามคือreadshow

Prelude> show 3
"3"

Prelude> read $ show 3 :: Int
3

38
@Lega: คุณอาจพบนี้มีประโยชน์: haskell.org/hoogle/?hoogle=Int+-%3E+String
kennytm

3
@ KennyTM ผู้คนจำนวนมากจะพบว่าลิงก์นั้นมีประโยชน์! ลิงค์เพียงอย่างเดียวคือ +1 แต่เพื่อแสดงวิธีใช้ ... นั่นคือ +10 ขอบคุณ :)
CoR

โปรดทราบว่าบางองค์กร / มาตรฐานไม่สนับสนุนการใช้ "การแสดง" อย่างมากเนื่องจากมีความหลากหลายมาก ฟังก์ชั่นเฉพาะประเภท (หรือกรณีที่เลวร้ายที่สุด wrapper รอบการแสดง) จะเป็นประโยชน์
Jon Watte

@ JonWatte "Might" ไม่ใช่ "จะ" ในระดับทั่วไปของคำถามนี้ฉันไม่คิดว่าข้อเสนอแนะของคุณสามารถดำเนินการได้
duplode

มีวิธีทำด้วยตนเองโดยไม่ต้องใช้ระบบ usyng หรือไม่
lesolorzanov

4

ตัวอย่างตามคำตอบของ Chuck:

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

โปรดทราบว่าหากไม่มีshowบรรทัดที่สามจะไม่รวบรวม


4

ทุกคนที่เพิ่งเริ่มต้นด้วย Haskell และพยายามพิมพ์ Int ให้ใช้:

module Lib
    ( someFunc
    ) where

someFunc :: IO ()
x = 123
someFunc = putStrLn (show x)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.