Sự khác biệt giữa bao gồm và yêu cầu trong con rối


8

Tôi có một lớp học về con rối nếu tôi có đoạn mã sau:

class A {
  require B

....
} 

Tôi nhận được lỗi phụ thuộc tròn. Nếu tôi có:

class A {
  include B

....
} 

mọi thứ đều hoạt động tốt

Câu trả lời:


18

Chúng là những thứ rất khác nhau, thực sự. Để nói require Bcó nghĩa là Bphải đến trước A(và, do đó, có thể dẫn đến sự phụ thuộc vòng tròn nếu một cái gì đó Bbật ra require A). Và nếu Bkhông được bao gồm trong tất cả, nó sẽ dẫn đến thiếu phụ thuộc lỗi.

Mặt khác, include Bchỉ cần nói Bsẽ được áp dụng bất cứ khi nào Ađược áp dụng: nó không nói gì về trật tự giữa chúng.


Không require Bthực sự có nghĩa là Bphải đến trước A?
Sebastian Krysmanski

@SebastianKrysmanski Uh, vâng. :)
Daniel C. Sobral

10

Điều này chỉ được hỏi (và trả lời) trong danh sách gửi thư rối:

Sự khác biệt là rõ ràng khi danh mục cần phải được áp dụng. Với bao gồm, bạn đã đánh giá nội dung của nó tại thời điểm bao gồm - nhưng bất kỳ tài nguyên nào cũng phải được phụ thuộc một cách rõ ràng sau khi bao gồm. Với yêu cầu - sự phụ thuộc được tạo ra cho bạn - nhưng bạn phải cẩn thận và đảm bảo rằng đây là kết quả mong muốn của bạn

- Ken Barber trong Yêu cầu vs Bao gồm?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.