sách gpt4 ai đã đi

Trong object.initialize, sử dụng self có tốt hơn không? Quá@?

In lại Tác giả: Data Little Sun Thời gian cập nhật: 2023-10-29 06:53:39 25 4
mua khóa gpt4 Nike

Có một quy ước là tham chiếu đến các thuộc tính của một đối tượng thông qua các biến thể hiện của nó bất cứ khi nào có thể. Thiết kế hướng đối tượng thực tế trong Rubygiải thích:

Luôn bao bọc các biến thể hiện trong các phương thức truy cập thay vì tham chiếu trực tiếp đến các biến...

Đây là một ví dụ mà tôi đã diễn giải lại:

lớp học
attr_reader :vòng xích, :bánh răng
...
tỷ lệ định nghĩa
# điều này tệ quá
# @chainring / @cog.to_f
# điều này tốt
đĩa xích / cog.to_f
kết thúc

Cách phổ biến nhất mà tôi thấy để tạo đối tượng mới bằng cách sử dụng biến thể hiện là:

lớp Sách
attr_accessor :tiêu đề
def khởi tạo(tiêu đề)
@title = tiêu đề
kết thúc
kết thúc

@tiêu đề= Truy cập trực tiếp vào các biến thể hiệntiêu đề. Giả sử chúng ta tuân theo quy ước "thuộc tính trên các biến thể hiện",sử dụng tự.tiêu đề= Có phù hợp hơn không?sẽ bảo đối tượng tự gửi cho mình thông điệp tiêu đề= , do đó sử dụng phương pháp ghi thuộc tính để ghi đè trực tiếp lên biến thể hiện?

lớp Sách
attr_accessor :tiêu đề
def khởi tạo(tiêu đề)
self.title = tiêu đề
kết thúc
kết thúc

Cuốn sách nói rằng "thuộc tính được ưu tiên hơn biến thể hiện", ám chỉ việc đọc biến thể hiện, nhưng liệu nó có áp dụng cho việc viết không?

1 Câu trả lời

Cuốn sách nói về 'thuộc tính trên biến thể hiện' liên quan đến việc đọc một biến thể hiện, nhưng liệu nó có áp dụng được cho việc viết không?

Vâng, điều này cũng đúng với việc viết. Nhưng,khởi tạo Một phương thức là đặc biệt vì nó có trách nhiệm thiết lập một đối tượng. Khi bạn sử dụng phương thức setter, bạn làm như vậy vì phương thức setter có thể thực hiện một số công việc bổ sung (chẳng hạn như phương thức setter thuộc tính trong Rails). Trong trình khởi tạo, bạn thường không muốn có bất kỳ tác dụng phụ nào nên bạn truy cập trực tiếp vào các biến thể hiện.

Về ruby ​​​​- Trong object.initialize, có nên sử dụng self không? Quá@? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/21036031/

25 4 0
Bài viết được đề xuất: Capistrano bundler: cài đặt không thành công
Bài viết được đề xuất: Trong Flutter, khi nào nên sử dụng timer.cancel() thay vì timer = null?
Bài viết được đề xuất: Flutter - `Trạng tháiCó ích gì?
Bài viết được đề xuất: Mục đích của `Kernel` là gì?