Heredoc คืออะไร?
Heredoc คือวิธีกำหนดสตริงหลายบรรทัด (multiline string) ขณะ รักษาการเว้นวรรคและรูปแบบเดิม
สิ่งนี้ใช้สำหรับฝังโค้ดสนิปเพท (snippets) เช่น SQL หรือ HTML
ตัวอย่าง:
query = <<-SQL SELECT * FROM food WHERE healthy = true SQL
คุณใช้ไวยากรณ์นี้เพื่อ กำหนด heredoc ใน Ruby
คุณเริ่มด้วยสัญลักษณ์ <<- ตามด้วยคำที่แทนชื่อสำหรับ heredoc นี้ แล้วเนื้อหา heredoc แล้วปิด heredoc ด้วยคำนั้นๆ บนบรรทัดของตัวมันเอง
อีกวิธีหนึ่งคือใช้ %Q:
query = %Q( Article about heredocs )
คุณจะได้ newline เพิ่มเติมที่เริ่มและท้ายของสตริงนี้ Heredoc (หรือการเรียกเมธอด strip) แก้ปัญหานี้
นี่คือ Ruby heredoc โดยไม่มี trailing newline:
query = <<-HTML.chomp Article about heredocs HTML
การ Interpolation ใน Ruby Heredoc
หากคุณสงสัยว่าสามารถใช้ string interpolation กับ heredoc ได้ไหม...
คำตอบคือ ได้!
ตัวอย่าง:
type = "healthy"
table = "food"
query = <<-SQL
SELECT * FROM #{table}
WHERE #{type} = true
SQL
คุณสามารถปิด interpolation ได้โดยการล้อมชื่อ heredoc ด้วย single quotes
เช่นนี้:
doc = <<-'TIME'
Current time is #{Time.now}
TIME
Ruby Squiggly Heredoc
คุณจะลบ indentation เพิ่มเติมที่ต้นทุกบรรทัดได้อย่างไร?
นั่นคือสิ่งที่ squiggly heredoc ทำ
นำเข้าใน Ruby 2.3 squiggly heredoc ลบ indentation เพิ่มเติมให้คุณอัตโนมัติ
ตัวอย่าง:
page = <<-HTML Heredocs are cool & useful HTML # " Heredocs are cool & useful\n" page = <<~HTML Heredocs are cool & useful HTML # "Heredocs are cool & useful\n" page = <<~HTML.strip Heredocs are cool & useful HTML # "Heredocs are cool & useful"
ตอนนี้คุณสามารถเก็บช่องว่างเพิ่มเติมไว้เพื่อความอ่านง่าย
ขณะที่ไม่มีมันในสตริงจริง!
สรุป
คุณได้เรียนรู้วิธีใช้ heredocs ใน Ruby สำหรับฝังสตริงหลายบรรทัดในโค้ดของคุณ สิ่งนี้อาจมีประโยชน์สำหรับการเขียนเทสต์สำหรับโค้ดของคุณ หรือมีข้อมูลเล็กๆ พร้อมใช้งานโดยไม่ต้องอ่านไฟล์
ขอบคุณที่อ่านครับ!