Computer >> Máy Tính >  >> Lập trình >> Ruby

Cách tạo các đối tượng Ruby tự mô tả

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.