Которая, Ведьма, есть Которая

Печатать заявления

Есть три основных метода, которые рубисты используют для отображения информации на экране: puts, print и p. Однако мы часто задаем себе вопрос: какой из них использовать? Чтобы начать отвечать на этот вопрос, сначала мы определяем желаемый результат из утверждения, которое мы оцениваем. Во-вторых, мы должны подумать о том, как мы хотим отображать информацию и в каком формате. В-третьих, когда мы оцениваем инструкцию, мы должны учитывать, какое возвращаемое значение мы ожидаем. Помня об этих трех соображениях, давайте рассмотрим пример.

Пример

У меня есть множество моих любимых супергероев:

my_favorite_superheroes = [“Batman”, “Wonder Woman”, “Iron Man”, “Spider-Man”]

Моя цель - вывести на экран имя каждого персонажа. Используя три оператора печати, мы увидим, как каждый оператор влияет на отображение, форматирование и возвращаемое значение оцененного оператора.

Ставит

Использование метода puts в массиве, my_favorite_superheroes, перенесет каждый элемент массива (отдельных супергероев) и print их имя в новую строку.

puts my_favorite_superheroes
Batman
Wonder Woman
Iron Man
Spider-man
=>nil

Преимущество использования метода puts состоит в том, что метод puts автоматически вставляет новую строку после печати элемента массива. Без дополнительного кода puts отформатирует отображаемую информацию для нас, очень удобно! Недостатком использования оператора puts является то, что он возвращает значение nil. Не углубляясь в концепцию nil, возвращение значения nil по сути означает «отсутствие объекта». В нашем конкретном примере не было явного требования, чтобы наш оператор возвращал объект. Однако, как мы позже увидим с методом p, иногда возвращаемый объект может быть весьма полезным.

Распечатать

Теперь, когда мы видим, что делает для нас метод puts, давайте посмотрим, что происходит, когда мы применяем метод print. Используя метод print в нашем массиве, my_favorite_superhoes, мы получаем совсем другой результат.

print my_favorite_superheroes
[“Batman”, “Wonder Woman”, “Iron Man”, “Spider-Man”]

Вместо того, чтобы печатать имя каждого персонажа в новой строке, print будет печатать точное значение, хранящееся в my_favorite_heroes, который представляет собой массив, содержащий имена супергероев. Что здесь явно не очевидно, так это другой интересный результат использования оператора print. Оператор print не вставляет новую строку при выводе значений на экран. Например, если я позвоню print на Бэтмена, а затем print на Человека-паука, результатом будет конкатенация имен супергероев.

print “Batman”
print “Spider-Man”
BatmanSpider-man

Хотя оператор print работает так, как задумано, выводит содержимое на экран, конечный результат может быть не таким, как мы ожидали. Форматирование текста является первоочередной задачей при использовании оператора print. Итак, вы должны задать себе вопрос: ожидаю ли я, что вывод будет на новых строках? Кроме того, хочу ли я напечатать значение объекта или самого объекта?

P

p метод - это удобный рубиновый print метод, имеющий уникальную встроенную функцию. Как мы обсуждали ранее, puts имеет возвращаемое значение nil, что означает, что ничего не осталось. Что интересно в p, так это то, что он печатает значение объекта, имя супергероя, добавляет новую строку после каждого вывода на экран и, в качестве дополнительного бонуса, возвращает исходный объект. Возврат исходного объекта может не показаться бонусной функцией; однако возврат объекта и его печать пригодятся, когда мы пишем более длинные и сложные программы. Иногда программисты пишут метод, который должен print составить список любимых пользователями супергероев, а затем использовать этот же список для вызова дополнительной информации о суперспособностях каждого героя. Как мы теперь знаем, puts возвращает nil, что не поможет, если мы снова будем использовать значения. Однако метод p позволяет нам сохранить возвращаемое значение оценки, чтобы мы, как программисты, могли продолжать использовать эту информацию в дальнейшем. Эта простая, но мощная функциональность метода p сэкономит нам драгоценное время и энергию, поскольку проблемы, которые мы хотим решить с помощью кода, становятся все более сложными и сложными, содержащими сотни переменных. Кроме того, метод p - отличный инструмент для программистов, которые могут использовать его на красной и зеленой фазах рефакторинга написания кода. Программисты будут использовать метод p, чтобы заглянуть внутрь того, как компьютер оценивает части кода.

Рассмотрение

Решение, какой метод печати использовать в Ruby, может быть сложной задачей, когда, по сути, все они, казалось бы, достигают одной и той же цели. Однако, как мы обсуждали в этом посте, все три метода puts, print и p имеют свой особый способ выполнения задачи. Чтобы выбрать правильный оператор, программист должен учитывать:

  1. Каков желаемый результат от вызова метода печати Ruby для определенного элемента?
  2. Как информация должна отображаться и форматироваться на экране?
  3. Хотим ли мы вернуть исходный объект, для которого мы вызвали метод печати? Потребуется ли нам эта информация после того, как она будет выведена на экран?

Теперь, когда вы лучше понимаете сходства и различия, плюсы и минусы каждого метода печати, надеюсь, вы не будете спрашивать себя: puts, print или p, что?