Которая, Ведьма, есть Которая
Печатать заявления
Есть три основных метода, которые рубисты используют для отображения информации на экране: 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
имеют свой особый способ выполнения задачи. Чтобы выбрать правильный оператор, программист должен учитывать:
- Каков желаемый результат от вызова метода печати Ruby для определенного элемента?
- Как информация должна отображаться и форматироваться на экране?
- Хотим ли мы вернуть исходный объект, для которого мы вызвали метод печати? Потребуется ли нам эта информация после того, как она будет выведена на экран?
Теперь, когда вы лучше понимаете сходства и различия, плюсы и минусы каждого метода печати, надеюсь, вы не будете спрашивать себя: puts
, print
или p
, что?