Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

เชี่ยวชาญ Heredoc ใน Ruby: คู่มือปฏิบัติสำหรับสตริงหลายบรรทัด

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 สำหรับฝังสตริงหลายบรรทัดในโค้ดของคุณ สิ่งนี้อาจมีประโยชน์สำหรับการเขียนเทสต์สำหรับโค้ดของคุณ หรือมีข้อมูลเล็กๆ พร้อมใช้งานโดยไม่ต้องอ่านไฟล์

ขอบคุณที่อ่านครับ!