มีหลายวิธีในการพิมพ์สิ่งต่างๆ ใน Ruby
นี่คือที่มีประโยชน์ที่สุด:
- puts
- p
แต่มันต่างกันอย่างไร?
และ เมื่อไหร่ควรใช้ตัวไหน?
นั่นคือสิ่งที่คุณจะเรียนรู้ในบทความนี้!
วิธีพิมพ์โดยไม่มี newline
เมื่อต้องการพิมพ์สิ่งใดบนหน้าจอให้ผู้ใช้เห็น ปกติใช้ puts
แบบนี้:
puts "Hello there!"
Puts จะเพิ่ม new line ท้ายข้อความทุกครั้งที่ใช้
หากไม่ต้องการ newline ให้ใช้ print
ตัวอย่าง:
print 123
ครั้งต่อไปที่คุณ print จะอยู่บรรทัดเดียวกับข้อความก่อนหน้า
ตัวอย่าง:
print 123 print 456 print 789 123456789
แต่ถ้าใช้ puts:
puts 123 puts 456 puts 789 123 456 789
ทุกข้อความมีบรรทัดของตัวเอง!
Puts จัดการกับอาร์เรย์แตกต่างออกไปด้วย
ตัวอย่าง:
puts [1,2] 1 2 print [1,2] [1,2]
ความแตกต่างอีกอย่าง:
Puts พยายามแปลงทุกอย่างเป็น string (โดยเรียก to_s)
ทำไมถึงสำคัญ?
เพราะหากคุณพยายาม puts อาร์เรย์ที่มีค่า nil…
มันจะแสดงบรรทัดว่างบางบรรทัด!
ตัวอย่าง:
puts [1,nil,nil,2] 1 2
สรุป puts และ print:
- แปลงสิ่งต่างๆ เป็น string แม้จะหมายถึง empty string
เฉพาะ puts:
- เพิ่ม new line ท้ายข้อความ
- แสดง element ของอาร์เรย์ทีละบรรทัด
Debug Output ด้วย P
puts เทียบกับ p แล้วเป็นไง?
p เป็นเมธอดที่แสดง version "ดิบ" (raw) ของออบเจกต์
ตัวอย่าง:
> puts "Ruby Is Cool" Ruby Is Cool > p "Ruby Is Cool" "Ruby Is Cool"
p มีประโยชน์สำหรับอะไร?
Debugging
เมื่อคุณมองหาสิ่งอย่างเช่น (ปกติมองไม่เห็น) newline characters หรืออยากแน่ใจว่าค่าใดค่าหนึ่งถูกต้อง ให้ใช้ p
ความแตกต่างอีกอย่าง:
- puts คืนค่า nil เสมอ
- p คืนค่าออบเจกต์ที่คุณส่งเข้าไป
นี่คือความแตกต่างทางเทคนิค…
แต่อาจโผล่มา หากคุณพยายาม puts ตัวแปรเป็นบรรทัดสุดท้ายของเมธอด และคุณใช้ return value ของเมธอดนั้น
ตัวอย่าง:
def numbers puts 123 end numbers # nil
ในตัวอย่างนี้ เมธอด numbers จะแสดง 123 บนหน้าจอ แต่ return value จะเป็น nil
หากคุณลอง:
result = numbers
แล้ว result จะเป็น nil แทนที่จะเป็น 123
แต่ถ้าใช้ p จะทำงานได้
Pretty Printing
Ruby มีเมธอดพิมพ์อีกตัว
เรียกว่า pp
เหมือน p แตพิมพ์ hash และ array ขนาดใหญ่อย่างสวยงาม
สังเกตว่า Ruby เวอร์ชันเก่า (ก่อน 2.4) ต้อง require 'pp' เพื่อเข้าถึงเมธอดนี้
วิดีโอสอน
สรุป
คุณเรียนรู้ความแตกต่างระหว่าง puts, print และ p ใน Ruby แล้ว!

ตอนนี้คือ เวลาฝึกฝน
หากคุณฝึกกับสิ่งใหม่ทันที คุณจะบูรณาการข้อมูลนี้เข้าสู่ฐานความรู้ หากไม่ฝึก คุณจะลืม และไม่ได้ก้าวหน้า