Quelle est la différence entre inclure et exiger dans une marionnette


8

J'ai une classe en marionnette si j'ai le code suivant:

class A {
  require B

....
} 

J'obtiens une erreur de dépendances circulaires. Si j'ai:

class A {
  include B

....
} 

tout fonctionne bien

Réponses:


18

Ce sont des choses très différentes, en fait. Dire que les require Bmoyens Bdoivent venir avant A(et, par conséquent, peuvent conduire à des dépendances circulaires si quelque chose Bse révèle require A). Et s'il Bn'est pas inclus du tout, cela entraînera une erreur de dépendances manquante.

D'un autre côté, include Bdit simplement Bsera appliqué chaque fois qu'il Aest appliqué: il ne dit rien de l'ordre entre eux.


Cela ne require Bsignifie- t-il pas que cela Bdoit venir avant A?
Sebastian Krysmanski

@SebastianKrysmanski Euh, oui. :)
Daniel C.Sobral

10

Cela vient d'être demandé (et répondu) sur la liste de diffusion de marionnettes:

La différence est évidente lorsque le catalogue doit être appliqué. Avec l'inclusion, vous avez évalué son contenu au moment de l'inclusion - mais toutes les ressources doivent dépendre explicitement après l'inclusion. Avec un besoin - la dépendance est créée pour vous - mais vous devez être prudent et vous assurer que c'est le résultat souhaité

- Ken Barber dans Exiger vs inclure?

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.