Apa perbedaan antara termasuk dan butuhkan dalam boneka

8

Saya memiliki kelas dalam wayang jika saya memiliki kode berikut:

class A {
  require B

....
} 

Saya mendapatkan kesalahan dependensi melingkar. Jika saya punya:

class A {
  include B

....
} 

semuanya bekerja dengan baik

talg
sumber

Jawaban:

18

Mereka adalah hal yang sangat berbeda, sebenarnya. Mengatakan require Bcara Bharus datang sebelum A(dan, karenanya, dapat menyebabkan ketergantungan sirkular jika sesuatu Bberubah menjadi require A). Dan jika Btidak disertakan sama sekali, itu akan menyebabkan kesalahan dependensi yang hilang.

Di sisi lain, include Bhanya mengatakan Bakan diterapkan setiap kali Aditerapkan: ia mengatakan tidak ada urutan di antara mereka.

Daniel C. Sobral
sumber
Bukankah itu require Bberarti Bharus datang sebelumnya A?
Sebastian Krysmanski
@ SebastianKrysmanski Uh, ya. :)
Daniel C. Sobral
10

Ini hanya ditanyakan (dan dijawab) pada milis boneka:

Perbedaannya jelas ketika katalog perlu diterapkan. Dengan menyertakan Anda telah mengevaluasi isinya pada saat memasukkan - tetapi sumber daya apa pun harus bergantung secara eksplisit setelah menyertakan. Dengan persyaratan - ketergantungan dibuat untuk Anda - tetapi Anda harus berhati-hati dan memastikan bahwa ini adalah hasil yang Anda inginkan

- Ken Barber in Wajib vs Sertakan?

larsks
sumber