Читаем Учись программировать полностью

Хммм… похоже, когда я ввел буквы «К», «р», «и», «с» и затем нажал на Enter, gets воспринял все буквы моего имени и символ Enter! К счастью, имеется метод как раз для подобных случаев: chomp. Он убирает все символы Enter, которые «болтаются» в конце вашей строки. Давайте снова проверим эту программу, но на сей раз призовём на помощь chomp:

puts 'Приветик, ну и как Вас зовут?' name = gets.chomp

puts 'Вас зовут ' + name + '? Какое прекрасное имя!' puts 'Рад познакомиться с Вами, ' + name + '. :)'

Приветик, ну и как Вас зовут?

Chris

Вас зовут Chris? Какое прекрасное имя!

Рад познакомиться с Вами, Chris. :)

Гораздо лучше! Обратите внимание, что поскольку name указывает на gets.chomp, нам не требуется писать name. chomp; значение name уже было chomp–нуто.

• Напишите программу, которая спрашивает у человека имя, затем отчество, затем фамилию. В результате она должна поприветствовать человека, называя его полным именем.

• Напишите программу, которая спрашивает у человека его любимое число. Пусть ваша программа прибавит единицу к этому числу, а затем предложит результат в качестве большего и лучшего любимого числа. (Однако будьте при этом тактичными.)

После того, как вы закончите эти две программы (и любые другие, которые вы пожелаете попробовать), давайте изучим ещё несколько методов (и узнаем о них ещё что-нибудь).

<p>5. Ещё немного о методах</p>

Пока что мы видели несколько различных методов: puts и gets и так далее (Быстрый тест: Перечислите все методы, которые мы узнали до сих пор! Их десять; ответ приводится ниже.), но мы совсем не говорили о том, что из себя представляют методы. Мы знаем, что они делают, но мы не знаем, «что они такое».

И вот что они есть на самом деле: нечто, которое выполняет что-либо. Если объекты (такие как строки, целые и плавающие числа) являются существительными в языке Ruby, то методы подобны глаголам. И совсем также, как в английском [и в русском – Прим. перев.] языке, вы не используете глагол без существительного, чтобы выполнить действие, обозначаемое глаголом. Например, тиканье не совершается само по себе; настенные часы (или наручные или что-нибудь ещё) должны производить его. На естественном языке мы бы сказали: «Часы тикают.» На Ruby мы бы сказали clock.tick (естественно, предполагая, что clock – это объект Ruby). Программисты могли бы сказать, что мы «вызвали метод tick объекта clock» или что мы «вызвали tick у clock».

Ну что, вы выполнили тест? Хорошо. Что ж, я уверен, что вы вспомнили методы puts, gets и chomp, так как мы только что разобрали их. Вы, возможно, также усвоили наши методы преобразования: to_i, to_f и to_s. Однако, знаете ли вы остальные четыре? Ну конечно же, это не что иное, как старые добрые арифметические действия: +, -, * и / !

Как я уже говорил ранее, также как каждому глаголу нужно существительное, так и каждому методу требуется объект. Обычно легко сказать, какой объект выполняет метод: тот, что стоит непосредственно перед точкой, как в примере с clock.tick или в 101. to_s. Иногда же это не столь очевидно, например, в арифметических методах. Выясняется, что 5 + 5 это на самом деле просто сокращённый способ записи 5.+ 5. Например:

puts 'привет '.+ 'мир' puts (10.* 9).+ 9

привет мир 99

Выглядит не слишком привлекательно, поэтому мы больше не будем записывать методы в таком виде. Но нам ведь важно понимать, что же происходит в действительности. (На моей машине, эта программа также выдаёт мне такое предупреждение:

warning: parenthesize argument(s)for future_version

[предупреждение: заключите аргумент(ы) в скобки для будущих версий – Прим. перев.].

Этот код прекрасно выполнился, но мне было сказано, что возникли трудности при выяснении, что я имею в виду, поэтому на будущее рекомендуется использовать дополнительно скобки.) И это также даёт нам более глубокое понимание, почему мы можем выполнить 'pig'*5, но не можем выполнить 5*'pig': 'pig'*5 указывает 'pig' выполнить умножение, а 5*'pig' предписывает числу 5 выполнить умножение. Строка 'pig' знает, как сделать 5 собственных копий и объединить их вместе; однако, числу 5 будет затруднительно сделать 'pig' копий самого себя и сложить их вместе.

И, конечно, нам всё ещё нужно выяснить про puts и gets. Где же их объекты? В английском [и в русском – Прим. перев.] языке, вы можете иногда опустить существительное; например, если злодей завопит «Умри!», неявным существительным будет тот, кому он кричит. В Ruby, если я говорю puts ' быть

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных