Читать «Учись программировать (на Ruby)» онлайн - страница 10

Крис Пайн

name = 'Патриция Розанна Джессика Милдред Оппенгеймер'

puts 'Меня зовут ' + name + '.'

puts 'Ого! ' + name + ' – это правда длинное имя!'

Меня зовут Патриция Розанна Джессика Милдред Оппенгеймер.

Ого! Патриция Розанна Джессика Милдред Оппенгеймер – это правда длинное имя!

Кроме того: так же просто, как мы можем присвоить объект переменной, мы можем переприсвоить другой объект этой же переменной. (Вот почему мы называем их переменными: потому что то, на что они указывают, может изменяться.)

composer = 'Моцарт'

puts composer + ' был «сенсацией» в своё время.' composer = 'Бетховен'

puts 'Но мне лично больше нравится ' + composer + '.'

Моцарт был «сенсацией» в своё время.

Но мне лично больше нравится Бетховен. Конечно, переменные могут указывать на объект любого типа, а не только на строки:

var = 'ещё одна

+ 'строка'

puts var

var = 5 * (1+2)

puts var

ещё одна строка 15 Фактически переменные могут указывать почти на всё… кроме других переменных. А что же произойдёт, если мы попробуем?

var1

= 8

var2

= vari

puts

vari

puts

var2

puts

' '

var1

= 'восемь'

puts

vari

puts

var2

8

8

восемь

8

Сначала, когда мы попытались сделать, чтобы переменная var2 указывала на vari, она в действительности стала вместо этого указывать на 8 (на то же число, на которое указывала переменная vari). Затем мы сделали так, чтобы vari стала указывать на 'восемь', но поскольку var2 никогда не указывала на vari, она продолжает указывать на 8.

Ну а теперь, когда у нас есть переменные, числа и строки, давайте научимся, собирать их все вместе!

4. Собираем всё вместе

Мы рассмотрели несколько различных видов объектов (числа и буквы), мы создавали переменные, указывающие на них; а следующее, что мы хотим сделать – заставить их всех дружно работать вместе.

Мы уже знаем, что если мы хотим, чтобы программа напечатала 25, то следующий код не будет работать, поскольку нельзя складывать числа и строки:

var1 = 2

var2 = '5'

puts var1 + var2

Частично трудность заключается в том, что ваш компьютер не знает, пытаетесь ли вы получить 7 (2 + 5), или вы хотите получить 25 ('2' + '5').

Прежде чем мы сможем сложить их вместе, нам нужно каким-то образом получить строковую версию значения var1 или целочисленную версию значения var2.

Преобразования

Чтобы получить строковую версию объекта, мы просто записываем после него.to_s:

var1 = 2 var2 = '5'

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 до конца работы программы.