Trong bài viết này, bạn sẽ tìm hiểu cách hoạt động của phương pháp kiểm tra Ruby và tại sao chúng tôi sử dụng nó.
Khi bạn in một chuỗi hoặc mảng, bạn sẽ thấy nội dung của nó.
Ví dụ :
puts [1,2,3] 1 2 3
Nhưng khi bạn in các đối tượng của riêng mình…
Bạn thấy điều này :
#<Cat:0x29458e0>
Tại sao?
Bởi vì bạn chưa nói cho Ruby biết cách hiển thị lớp này theo cách có ý nghĩa.
Bạn có thể thay đổi điều này nếu bạn xác định một phương thức như to_s
.
Hãy xem cách hoạt động!
Triển khai to_s
Khi bạn sử dụng các đặt với một đối tượng, Ruby gọi to_s
để có được một biểu diễn chuỗi của đối tượng.
Theo mặc định, bạn nhận được tên lớp (Cat
)…
Cộng với một số số đại diện cho object_id
ở định dạng thập lục phân (0x29458e0
).
Đây là cách thay đổi điều đó :
class Cat def to_s "I'm a cat" end end puts Cat.new # "I'm a cat"
Nếu lớp của bạn có các biến cá thể, bạn có thể biến chúng thành một phần của mô tả đối tượng của mình.
Như thế này :
class Cat attr_reader :color def initialize(color) @color = color end def to_s "I'm a #{color} cat" end end puts Cat.new("blue") # "I'm a blue cat" puts Cat.new("white") # "I'm a white cat"
Bây giờ khi in đối tượng này, bạn sẽ thấy nhiều thông tin hữu ích hơn.
Không thú vị phải không?
Phương pháp kiểm tra Ruby
Bạn có thể biểu diễn một đối tượng theo hai cách khả thi.
Đầu tiên :
Sử dụng to_s
.
Đây là những gì bạn muốn người dùng của mình nhìn thấy khi bạn hiển thị đối tượng.
Ví dụ:với đối tượng thời gian, bạn sẽ hiển thị thời gian theo cách có ý nghĩa (2018-12-28 19:17:28
), thay vì hiển thị thời gian thực sự được lưu trữ như thế nào (1546021067
).
Sau đó :
Bạn có thể inspect
đối tượng, điều này cung cấp cho bạn một phiên bản thô hơn của đối tượng.
Sự khác biệt là gì?
- Xác định
to_s
để khi bạn sử dụng giá treo, nó sẽ hiển thị khung cảnh cụ thể này của đối tượng. - Xác định
inspect
để giúp chính bạn và các nhà phát triển khác gỡ lỗi.
Đây là một ví dụ :
"abc".inspect
Hiển thị dưới dạng :
"abc"
Kiểm tra giữ các dấu ngoặc kép và các ký tự đặc biệt (như \n
cho dòng mới) trở nên hiển thị.
Phần tốt nhất?
Bạn có thể triển khai inspect
trong các lớp của riêng bạn 🙂
Đây là cách thực hiện :
class Cat attr_reader :color def inspect "Cat - id: #{object_id} - color: #{color}" end end Cat.new("white").inspect # "Cat - id: 23316588 - color: white"
Đó là cách bạn có thể tạo các đối tượng mô tả chính chúng!
Hướng dẫn bằng video
Tóm tắt
Bạn đã học được cách sử dụng các phương thức Kiểm tra &to_s của Ruby để xây dựng các lớp tốt hơn!
Nếu bạn thích bài viết này, hãy chia sẻ nó để nhiều người có thể tìm thấy nó.
Cảm ơn vì đã đọc.