Давайте изменим направление. Для нас в переменной сохранено стихотворение.
> print poem
=> "My toast has flown from my hand
And my toast has gone to the moon.
But when I saw it on television,
Planting our flag on Halley's comet,
More still did I want to eat it."
Вместо "toast" можно поставить "melon" или что угодно. Давайте попробуем:
> poem['toast'] = 'honeydew'
=> "honeydew"
Теперь надо вывести на экран, чтобы увидеть новое стихотворение.
> print poem
=> "My honeydew has flown from my hand
And my toast has gone to the moon.
But when I saw it on television,
Planting our flag on Halley's comet,
More still did I want to eat it."
Заметили, что изменилось только первое упоминание "toast"?
Квадратные скобочки, которые мы только что использовали довольно часто встречаются в Ruby. Помните, мы набирали:
poem['toast'] = 'honeydew' У того бокса со словом "toast" квадратные скобочки с каждой стороны, видите?
Две скобочки вычерчивают цель. Точно. Эти скобочки говорят: "Я ищу ...". Готово, цель. Здесь мы ищем toast и заменяем его фруктом.
Вот вопрос: "Что будет, когда мы применим .reverse ко всему стихотворению?
> poem.reverse
=> ".ti tae ot tnaw I did llits eroM
,temoc s'yellaH no galf ruo gnitnalP
,noisivelet no ti was I nehw tuB
.noom eht ot enog sah tsaot ym dnA
dnah ym morf nwolf sah wedyenoh yM"
Да, конечно. Все стихотворение стало задом наперед, буква за буквой. На самом деле я хочу просто перевернуть строчки стихотворения. Чтобы оно шло от последней строчки к первой. Т.е. наоборот, но не так наоборот.
Это делается вот так:
> poem.lines.to_a.reverse
=> ["More still did I want to eat it.
", "Planting our flag on Halley's comet,
", "But when I saw it on television,
", "And my honeydew has gone to the moon.
", "My honeydew has flown from my hand
"]
Итак, что мы видим? Что произошло? Мы напечатали
poem.lines.to_a.reverse
и что произошло?
А произошли две вещи. Мы превратили
poem в список, использовав
lines.to_a
. lines - определяет каким именно образом надо разбить строку, а затем
to_a конвертирует в массив.
На месте
lines могут быть использованы такие методы, как
bytes или
chars. Когда мы используем lines, Ruby возвращает каждую строку в стихотворении.
Затем мы переворачиваем этот список. У нас есть каждая строка по отдельности. Мы ее перевернули. Вот и все.
Давайте рассмотрим здесь еще один метод:
print poem.lines.to_a.reverse.join
More still did I want to eat it.
Planting our flag on Halley's comet,
But when I saw it on television,
And my honeydew has gone to the moon.
My honeydew has flown from my hand
Вывод №3.
Отлично! Метод
join взял этот список перевернутых строчек и вывел их вместе в строку. (Конечно, мы могли просто использовать
to_s).
Анализ времени.
Восклицательные знаки. Методы могут иметь восклицательные знаки (а также и вопросительные) в своем названии. Не вопрос. Попробуйте:
> poem.include? "my hand"
=> true
Квадратные скобки. Определяют цель и находят вещи. Находят и заменяют.
Цепные (связывающие) методы помогают нам сделать побольше пертурбаций. Разбить стихотворение, перевернуть его, снова собрать.
poem.lines.to_a.reverse.join
Здесь вы наверное еще немного хотите поиграть со стихотворением. Полный список всех строковых методов
здесь. Пойдите и попробуйте несколько. Например,
poem.downcase или
poem.delete
.)
Наберите books = {}
> books = {}
=> {}
Таким образом мы сделали пустой
hash. (Также известный как пустой
словарь).
Сейчас мы собираемся сделать небольшие книжные ревью в этом хэше. Вот наша рейтинговая система:
:splendid --> a masterpiece. роскошный --> шедевр.
:quite_good --> enjoyed, sure, yes. неплохо --> понравилось, конечно, да.
:mediocre --> equal parts great and terrible. посредственный --> поровну великих и ужасных.
:quite_not_good --> notably bad. достаточно плохо --> в основном плохо.
:abysmal --> steaming wreck. чрезвычайный --> полная фигня(?).
ыва