Подтвердить что ты не робот

В чем разница между "p" и "pp"?

Я действительно занимался поиском, но не могу найти ответ на простой вопрос.

В чем разница между p и pp в Ruby? Я знаю, что вам нужно require 'pp'. Кроме того, в чем отличия?

4b9b3361

Ответ 1

p используется для проверки переменной как помощника отладки. Он печатает выходные данные метода #inspect. Например, p foo выведет содержимое foo.inspect.

Иногда вам нужно отлаживать сложные переменные или вложенные переменные. В этом случае p выводит длинную строку, которую трудно понять. Вместо этого pp поставит попытку упорядочить содержимое переменной, чтобы ее было легче понять, например, отступы вложенных массивов или использование одной строки для каждой переменной экземпляра сложного объекта. pp вызывает вызов метода #pretty_inspect (библиотека pp добавляет методы #pretty_inspect ко многим классам, таким как String, Array или Struct).

Чтобы помнить: p= print, pp= pretty print.

Ответ 2

Они немного отличаются.

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}]

Обратите внимание: я украл тестовые данные с сайта, на котором показано разница между pp и их драгоценным камнем.

Ответ 3

p печатает строковое представление объекта, за которым следует новая строка. Таким образом, puts. Разница в том, что puts использует to_s для преобразования аргумента в строку, а p использует inspect. Это означает, что p часто более полезно для отладки, чем puts.

pp - "довольно печатная"; он использует pretty_inspect для получения строкового представления объекта.