Constructor implementa una versión de method_missing
que añade etiquetas dadas por el nombre de la llamada al método.
Suponiendo que está jugando en la IRB (o consola de rieles), el comportamiento predeterminado del IRB cuando se evalúa una expresión (como Builder::XmlMarkup.new
) es llamar inspect
en él, con el fin de generar una cadena para mostrar a usted. En el caso del constructor, inspect
no es el método habitual de ruby inspect
- se trata de method_missing
y agrega la etiqueta.
Esto solo ocurrirá cuando juegues con ruby de forma interactiva. Puede hacer cosas como
xml = Builder::XmlMarkup.new; false
Aquí el resultado de la expresión es false
llamadas, de modo que el IRB inspect
y sale de su objeto constructor solo.
Puede ser incómodo seguir haciendo esto continuamente. Si lo hace
xml = Builder::XmlMarkup.new; false
def xml.inspect; target!; end
continuación xml
todavía habrá un objeto constructor que deben mostrarse su contenido en la inspección efectuada por el IRB. No podrá crear etiquetas llamadas inspect
(que no sean el tag!
), pero eso suele ser un inconveniente menor.
No se puede conseguir que esto funcione :-( – lemon
sí mismo aquí que todavía muestra el elemento de inspeccionar – MXV
que hay que tener cuidado de que nunca deja IRB intenta mostrar el constructor –