การแทรกค่าลงในสตริง

Haskell:
การแทรกค่าลงในสตริง

วิธีทำ:

ใน Haskell, การแทรกตัวแปรลงในสตริงไม่ได้เป็นส่วนหนึ่งมาแต่ต้น แต่ด้วยแพ็คเกจ interpolate คุณสามารถทำได้เกือบเหมือนกัน ก่อนอื่น, ตรวจสอบว่าคุณมีแพ็คเกจ:

cabal update
cabal install interpolate

ตอนนี้, เขียนฮาสเกลบางอย่าง:

{-# LANGUAGE QuasiQuotes #-}
import Data.String.Interpolate (i)

main :: IO ()
main = do
    let name = "world"
    let greeting = [i|Hello, #{name}!|]
    putStrLn greeting

เรียกใช้:

Hello, world!

ภาพรวมลึกซึ้ง

ในอดีต, Haskell ไม่มีการแทรกตัวแปรลงในสตริงมาแต่อย่างใด มันเป็นคุณสมบัติที่พบในภาษาสคริปต์มากกว่า การแทรกตัวแปรทำได้ง่ายขึ้นใน Haskell ด้วยการพัฒนาของ quasiquoters ซึ่งช่วยให้คุณกำหนดไวยากรณ์ของตัวเอง—เช่น i ของเราสำหรับการแทรกสตริง

มีทางเลือกอื่นหรือไม่? แน่นอน, ใช้ printf จาก Text.Printf, หรือต่อสตริงและตัวแปรด้วย ++ แต่วิธีเหล่านี้ขาดความเรียบง่ายและสะดวกของการแทรกตัวแปร

ในแง่ของการนำไปใช้, interpolate แปลงสตริงที่ได้รับการแทรกตัวแปรของคุณเป็นสตริงฮาสเกลปกติที่เวลาคอมไพล์โดยใช้ Template Haskell, ดังนั้นจึงไม่มีการกระทบต่อประสิทธิภาพเมื่อเรียกใช้โค้ดของคุณ มันเป็นวิธีที่ชาญฉลาดและสะอาด, เหมือนฮาสเกลเอง

ดูเพิ่มเติม