wwe rue matt logo jeff hardy ericka britt beth actualidad ruby

ruby - rue - ¿Cuál es la diferencia entre “p” y “pp”?



jeff hardy y matt hardy (3)

Hice algunas búsquedas, pero no puedo encontrar una respuesta a una pregunta simple.

¿Cuál es la diferencia entre p y pp en Ruby? Sé que necesitas require ''pp'' . Además de eso ¿cuáles son las diferencias?


Difieren ligeramente.

data = [false, 42, %w{fourty two}, {:now => Time.now, :class => Time.now.class, :distance => 42e42}] p data [false, 42, ["fourty", "two"], {:now=>2012-01-25 19:23:06 +0000, :class=>Time, :distance=>4.2e+43}] pp data [false, 42, ["fourty", "two"], {:now=>2012-01-25 19:23:06 +0000, :class=>Time, :distance=>4.2e+43}]

Tenga en cuenta: robé los datos de prueba de un sitio que muestra la diferencia entre pp y su gema .


p imprime una representación de cadena de un objeto, seguida de una nueva línea. Así se puts . La diferencia es que puts usos to_s para convertir el argumento en una cadena, y p utiliza inspect . Esto significa que p es a menudo más útil para la depuración que puts .

pp es "impresión bonita"; utiliza pretty_inspect para obtener una representación de cadena de un objeto.


p se utiliza para inspeccionar una variable como asistente de depuración. Funciona imprimiendo la salida del método #inspect . Por ejemplo, p foo emitirá el contenido de foo.inspect .

A veces necesitas depurar variables complejas o variables anidadas. En este caso, p generará una línea larga que es difícil de entender. En su lugar, pp intentará organizar el contenido de la variable para que sea más fácil de entender, por ejemplo, sangrar matrices anidadas o usar una línea para cada variable de instancia de un objeto complejo. pp hace esto llamando al método #pretty_inspect (la biblioteca pp agrega métodos #pretty_inspect a muchas clases como String , Array o Struct ).

Para recordar: p = imprimir, pp = impresión bonita.