Si me quedo este archivo como "ruby x.rb
':¿Qué es "principal" en Ruby?
class X
end
x = X.new
¿Qué es lo que se llama' X.new
"?
¿Es un objeto/proceso/etc.?
Si me quedo este archivo como "ruby x.rb
':¿Qué es "principal" en Ruby?
class X
end
x = X.new
¿Qué es lo que se llama' X.new
"?
¿Es un objeto/proceso/etc.?
Todo en Ruby ocurre en el contexto de algún objeto. El objeto en el nivel superior se llama "principal". Básicamente es una instancia de Object con la propiedad especial de que los métodos definidos allí se agregan como métodos de instancia de Object (para que estén disponibles en todas partes).
para que podamos hacer un guión compuesto enteramente de:
puts object_id
@a = 'Look, I have instance variables!'
puts @a
y se imprimirá "105640" y "Mira, tengo las variables de instancia".
No es algo que generalmente deba preocuparse, pero está ahí.
Algunas de las otras respuestas dicen que el "intérprete de ruby" llama al nuevo método. Pero creo que estás diciendo que hay un paso intermedio antes de que eso suceda. Y es que se crea una instancia de Object y toda la ejecución está mediada por ese objeto. En realidad, estoy tratando de completar los espacios en blanco sobre cómo se pasa el "nuevo" método como un mensaje al objeto X. Por lo que dices, parece que la principal (instancia de objeto) pasa el nuevo método como un mensaje a la instancia de X Class. ¿Me estoy acercando? – lorz
Bueno, supongo que técnicamente puedes decir que es el intérprete de Ruby el que hace * todo *, ya que es lo que realmente ejecuta tu código. Pero desde el punto de vista del idioma, sí, su descripción parece exactamente correcta. En el nivel superior, cuando empiezas a escribir en Ruby, estás en el contexto de ese objeto. La mayoría de las personas no usan el nivel superior como un objeto, pero es uno. – Chuck
Nota: Esta respuesta está un poco desactualizada. El método definido en el espacio de nombres 'main' ahora se agrega" mágicamente "a' BasicObject', que subclasifica 'Object' a partir de Ruby 1.9. – steel
Es la clase X. Usted está invocando el método "nuevo" que crea un objeto de la clase X. Por lo tanto, si ejecuta este texto como una secuencia de comandos, Ruby:
new
es uno.x
new
en esa nueva clase X
, la creación de un objeto de instancia de X; x obtiene una referencia a ese objeto.creo que se refiere a un punto de entrada de algún tipo. – Geo
Es la intérprete de Ruby correr la línea
x = X.new
Al igual que con muchos lenguajes de script, el guión se interpreta de arriba hacia abajo en lugar de tener un método de punto de entrada estándar como la mayoría de los lenguajes compilados.
Sí, creo que la persona que hizo esta pregunta se refería a 'main' desde la perspectiva de un programador de C.Todos los demás aquí parecen estar pensando en el objeto de primer nivel llamado 'main' en Ruby, que no es exactamente lo mismo. – Ajedi32
Como dijo Charlie Martin, X.new es una llamada al constructor en la clase X, que devuelve un objeto de tipo X, almacenado en la variable x.
Según su título, creo que está buscando un poco más. Ruby no necesita un main, ejecuta el código en el orden en que lo ve. Por lo tanto, las dependencias se deben incluir antes de llamarlas.
Así que su principal es cualquier código de estilo de procedimiento que se escribe fuera de una definición de clase o módulo.
Haz ruby -e "puts self". Imprimirá "principal". Es el objeto de contexto de nivel superior. – Chuck
mi punto era simplemente que no declaras un método principal, como el cartel original parecía implicar en su pregunta. –
El llamador de nivel superior es un objeto principal, que es de clase Object.
probar este programa de rubí:
p self
p self.class
siento que esta pregunta podría beneficiarse del contexto de éste: http://stackoverflow.com/questions/916795 – mipadi
Pregunta de la misma persona. LOL – Randolpho