Có nhiều cách in ra màn hình trong Ruby.
Các cách hữu ích nhất:
- puts
- p
Nhưng chúng khác nhau như thế nào?
Và khi nào nên dùng cái nào?
Đó là điều bạn sẽ học trong bài này!
In không xuống dòng mới
Khi muốn in thứ gì đó ra màn hình cho user xem, bạn thường dùng puts.
Như sau:
puts "Hello there!"
Puts tự động thêm dòng mới cuối thông điệp mỗi lần dùng.
Nếu không muốn xuống dòng, dùng print.
Ví dụ:
print 123
Lần sau bạn print gì nó sẽ cùng dòng với thông điệp trước.
Ví dụ:
print 123 print 456 print 789 123456789
Nhưng nếu dùng puts:
puts 123 puts 456 puts 789 123 456 789
Mỗi thông điệp có dòng riêng!
Puts cũng xử lý array khác biệt.
Ví dụ:
puts [1,2] 1 2 print [1,2] [1,2]
Khác biệt khác:
Puts cố gắng chuyển mọi thứ thành string (bằng cách gọi to_s).
Tại sao quan trọng?
Vì nếu bạn puts array có giá trị nil…
Sẽ hiển thị dòng trống!
Ví dụ:
puts [1,nil,nil,2] 1 2
Tóm lại, puts và print:
- Chuyển thứ thành string, ngay cả khi là string rỗng
Chỉ puts:
- Thêm dòng mới cuối thông điệp
- Hiển thị phần tử array mỗi dòng một
Debug Output với P
puts vs p thì sao?
p là phương thức hiển thị phiên bản "raw" hơn của object.
Ví dụ:
> puts "Ruby Is Cool" Ruby Is Cool > p "Ruby Is Cool" "Ruby Is Cool"
p hữu ích cho gì?
Debug.
Khi bạn tìm thứ như ký tự newline (thường vô hình), hoặc muốn chắc chắn giá trị đúng, dùng p.
Khác biệt khác:
- puts luôn trả về nil
- p trả về object bạn truyền vào
Đây là khác biệt kỹ thuật…
Nhưng có thể hiện ra nếu bạn thử puts biến làm dòng cuối của phương thức, và bạn dùng return value của phương thức đó.
Ví dụ:
def numbers puts 123 end numbers # nil
Trong ví dụ này, phương thức numbers sẽ hiển thị 123 ra màn hình, nhưng return value là nil.
Nếu bạn thử:
result = numbers
Thì result sẽ là nil, thay vì 123.
Nhưng nếu dùng p thì sẽ chạy được.
Pretty Printing
Ruby còn một phương thức in khác.
Gọi là pp.
Này giống p nhưng in hash và array lớn đẹp hơn.
Lưu ý Ruby cũ (trước 2.4) cần require 'pp' để dùng phương thức này.
Video hướng dẫn
Tóm tắt
Bạn đã học khác biệt giữa puts, print và p trong Ruby!

Giờ là thời gian thực hành.
Nếu bạn practice ngay với kiến thức mới, bạn sẽ tích hợp thông tin vào knowledge base, nếu không practice bạn sẽ quên và không tiến bộ.