¿Cuál es la diferencia entre incluir y exigir en títere

8

Tengo una clase de títeres si tengo el siguiente código:

class A {
  require B

....
} 

Me sale un error de dependencias circulares. Si tengo:

class A {
  include B

....
} 

todo funciona bien

talg
fuente

Respuestas:

18

Son cosas muy diferentes, en realidad. Decir que los require Bmedios Bdeben venir antes A(y, por lo tanto, pueden conducir a dependencias circulares si Bresulta algo require A). Y si Bno se incluye en absoluto, dará lugar a un error de dependencias faltantes.

Por otro lado, include Bsolo dice Bque se aplicará siempre que Ase aplique: no dice nada del orden entre ellos.

Daniel C. Sobral
fuente
¿En require Brealidad no significa que Bdebe venir antes A?
Sebastian Krysmanski
@SebastianKrysmanski Uh, sí. :)
Daniel C. Sobral
10

Esto solo se preguntó (y respondió) en la lista de correo de títeres:

La diferencia es evidente cuando el catálogo necesita ser aplicado. Con include, ha evaluado su contenido en el momento de la inclusión, pero cualquier recurso debe depender explícitamente después de la inclusión. Con un requisito, la dependencia se crea para usted, pero debe tener cuidado y asegurarse de que este sea el resultado deseado.

- Ken Barber en Requerir vs Incluir?

larsks
fuente