Mi pregunta es similar a "¿Cuál es la diferencia entre include y extend en Ruby?".
¿Cuál es la diferencia entre los require
y include
en Ruby? Si sólo desea utilizar los métodos de un módulo en mi clase, debo require
o include
?
¿Cuál es la diferencia entre incluir y exigir en Ruby?
- Preguntado el 25 de Noviembre, 2008
- Cuando se hizo la pregunta
- 80506 visitas
- Cuantas visitas ha tenido la pregunta
- 5 Respuestas
- Cuantas respuestas ha tenido la pregunta
- Solucionado
- Estado actual de la pregunta
Respuestas
¿Demasiados anuncios?A partir de aquí:
¿Cuál es la diferencia entre "incluir" y "exigir" en Ruby?
Respuesta:
El incluir y que requieren de métodos de hacer cosas muy diferentes.
El requerir método que no lo incluyen en la mayoría de los otros de programación idiomas: ejecutar otro archivo. También pistas de lo que has requerido en la pasado y no requieren el mismo archivo dos veces. Para ejecutar otro archivo sin esta funcionalidad adicional, se puede utilizar el método de carga.
El incluir el método de toma de todas las métodos de otro módulo y incluye en el módulo actual. Este es un nivel de lenguaje como la cosa se opuso a nivel de archivos como la cosa con requieren. El método include es el principal forma de "ampliar" las clases con otros módulos (por lo general referido como mix-ins). Por ejemplo, si su clase define el método de "cada uno", puede incluir el mixin módulo Enumerable y puede actuar como una colección. Este puede ser confuso como el verbo incluir se utiliza de forma muy diferente en otros idiomas.
Así que si usted sólo desea utilizar un módulo, en lugar de ampliar o hacer una mezcla, a continuación, usted querrá usar require
.
Curiosamente, Ruby require
es similar a C, include
, mientras que la de Ruby include
es casi nada como C, include
.
Si está utilizando un módulo, que significa que usted está trayendo a todos los métodos a los de su clase.
Si extend
de una clase con un módulo, lo que significa que está "trayendo" del módulo métodos como la clase demétodos.
Si include
de una clase con un módulo, lo que significa que está "trayendo" del módulo métodos como ejemplo de los métodos.
EX:
module A
def say
puts "this is module A"
end
end
class B
include A
end
class C
extend A
end
B.say
=> undefined method 'la opinión' para B:ClaseB.new.say
=> este es Un módulo deC.say
=> este es Un módulo deC.new.say
=> undefined method 'la opinión' para C:la Clase
Ruby
require
es más como "incluir" en otros lenguajes (como C). Le dice a Ruby que desea llevar en el contenido de otro archivo. Mecanismos similares en otros idiomas:Ruby
include
es un orientada a objetos herencia mecanismo utilizado para mixins.
Hay una buena explicación aquí:
[La] respuesta simple es que requieren y son esencialmente ajenos.
"exigir"que es similar a la de C, que puede causar novato confusión. (Una diferencia notable es que los locales en el interior del archivo requerido "evaporan" cuando la requieren.)
El Rubí se incluyen se parece en nada a la C incluyen. La instrucción include "mezclas" de un módulo en una clase. Es una forma limitada de la herencia múltiple. Un módulo literalmente concede una "es-un" relación a la cosa que se incluye.
Énfasis añadido.
Preguntas relacionadas
- ¿Por qué se elimina Ruby 1.9.2 "." de LOAD_PATH y lo ' es la alternativa?
- ¿Cuál es la diferencia entre incluir y ampliar en Ruby?
- JRuby on Rails vs Ruby on Rails, ¿cuál es la diferencia?
- En Ruby on Rails, ¿cuál es la diferencia entre DateTime, Timestamp, la Hora y la Fecha?
- ¿La diferencia entre mapa y recoger en Ruby?
- ¿Cuál es la diferencia entre DateTime y hora en Ruby?
- ¿' Es la diferencia entre incluir y ampliar en diagrama de casos de uso?
- sqlite3-ruby de error de instalación en Ubuntu
- Ruby on Rails y rastrille problemas: no se ha inicializado Rake::DSL constante
- rieles 3.1.0 ActionView::Template::Error (application.css no es precompilado)
Preguntas Destacadas
- ¿Cómo me tire de un repositorio de Git a través de un proxy HTTP,?
- La diferencia Entre Seleccionar y SelectMany
- Renderizar una vista como una cadena de
- ¿Cómo se puede averiguar qué proceso está escuchando en un puerto en Windows?
- Lectura de archivos de Excel desde C#
- Consulta de MySQL GRUPO POR día / mes / año
En nuestra red
- ¿Aplicaciones ' actualizar estado en aplicación de mercado no siempre es fiable?
- Es seguro borrar ~Biblioteca/Desarrollador?
- Cociente de geometrías conocido en la cultura popular, tales como "plana toro = Asteroides juego de video"
- La visita a un salón en la T1 del Aeropuerto Internacional de Dubai, durante una escala en T3?
- Registro de transporte y de agregación a escala