среда, 22 августа 2012 г.

Why 3

Давайте изменим направление. Для нас в переменной сохранено стихотворение.


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['toas­t'] = 'hone­ydew'
=> "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.rever­se
=> ".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.reve­rse
=> ["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_alines - определяет каким именно образом надо разбить строку, а затем to_a конвертирует в массив.
   На месте lines могут быть использованы такие методы, как bytes или chars. Когда мы используем lines, Ruby возвращает каждую строку в стихотворении.
   Затем мы переворачиваем этот список. У нас есть каждая строка по отдельности. Мы ее перевернули. Вот и все.
   Давайте рассмотрим здесь еще один метод:


print poem.­lines.to_a­.reverse.j­oin
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.inclu­de? "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.    чрезвычайный --> полная фигня(?).

ыва

Комментариев нет:

Отправить комментарий