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

puts var1.to_s + var2

25

Подобным же образом to_i возвращает целочисленную версию значения объекта, а

to_ f возвращает плавающую версию. Давайте взглянем на то, что эти три метода

делают (и что не делают) чуть более пристально:

var1 = 2 var2 = '5'

puts var1.to_s + var2 puts var1 + var2.to_i

25

7

Обратите внимание, что даже после того, как мы получили строковую версию var1,

вызвав to_s, переменная vari продолжает постоянно указывать на 2, и никогда – на '2'. До тех пор, пока мы явно не переприсвоим значение vari (что требует применение знака =), она будет указывать на 2 до конца работы программы.

А теперь давайте испробуем несколько более интересных (и несколько просто-таки странных) преобразований:

puts '15'.to_f

puts '99.999'.to_f

puts '99.999'.to_i

puts ''

puts '5 – это моё любимое число!'.to_i

puts 'Кто вас спрашивал о 5 или о чём-нибудь подобном?'.to_i

puts 'Ваша мамочка.'.to_f

puts ' '

puts 'строковое'.to_s puts 3.to_i

Итак, это, возможно, вызвало у вас некоторое удивление. Первый пример весьма обычен и даёт в результате 15.0. После этого мы преобразовали строку ' 99.999' в число с плавающей точкой и в целое. Плавающее получилось таким, как мы и ожидали; целое было, как всегда, округлено.

Далее, у нас было несколько примеров, когда несколько … необычных строк преобразовывались в числа. Ьо^ игнорирует всё, начиная с первой конструкции, которая не распознана как число, и далее до конца строки. Таким образом, первая строка была преобразована в 5, а остальные, поскольку они начинались с букв, были полностью проигнорированы, так что компьютер вывел только ноль.

Наконец, мы увидели, что последние два наших преобразования не изменили ровным счётом ничего – в точности, как мы и предполагали.

Другой взгляд на puts

Есть что-то странное в нашем любимом методе… Посмотрите-ка вот на это:

puts 20 puts 20.to_s puts '20'

20

20

20

Почему эти три вызова puts выводят одно и то же? Ну, положим, последние два так и должны выводить, поскольку 20.to_s и есть '20'. А как насчёт первого, с целым числом 20? Собственно говоря, что же это значит: написать целое число 20? Когда вы пишете 2, а затем 0 на листе бумаги, вы записываете строку, а не целое. Число 20 – это количество пальцев у меня на руках и ногах; это не 2 с последующим 0.

Что ж, у нашего знакомого, puts, есть большой секрет: прежде, чем метод puts пытается вывести объект, он использует to_s, чтобы получить строковую версию этого объекта. Фактически, s в слове puts обозначает string; puts на самом деле значит put string [«вывести строку» – Прим. перев.].

Сейчас это может показаться не слишком впечатляющим, но в Ruby есть много, много разнообразных объектов (вы даже научитесь создавать собственные объекты!), и было бы неплохо узнать, что произойдёт, если вы попытаетесь вывести с помощью puts действительно причудливый объект, например, фотографию вашей бабушки, музыкальный файл или что-нибудь ещё. Но об этом позже…

А тем временем, у нас есть для вас ещё несколько методов, и они позволят нам писать разнообразные забавные программы…

Методы gets и chomp

Если puts обозначает put string, уверен, что вы догадаетесь, что обозначает gets. И так же, как puts всегда «выплёвывает» строки, gets считывает только строки. А откуда он берёт их?

От вас! Ну, по крайней мере, с вашей клавиатуры. Так как ваша клавиатура может производить только строки, всё это прекрасно работает. В действительности происходит вот что: gets просто сидит себе и считывает всё, что вы вводите, пока вы не нажмёте Enter. Давайте попробуем:

puts gets

Здесь есть эхо?

Здесь есть эхо?

Конечно же, что бы вы ни вводили с клавиатуры, будет просто выведено вам обратно. Выполните пример несколько раз и попробуйте вводить разные строки.

Теперь мы можем делать интерактивные программы! Например, эта, когда вы введёте своё имя, поприветствует вас:

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

name = gets

puts 'Вас зовут ' + name + '? Какое прекрасное имя!'

puts 'Рад познакомиться с Вами, ' + name + '. :)'

Ммм-да! Я только что выполнил её – я ввёл своё имя, и вот что получилось:

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

[Chris]

Вас зовут Chris

? Какое прекрасное имя!

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

. : )

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

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

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

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

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

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

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

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

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