Лист, как признак статуса в Амброзии

Материал из Why's Poignant Guide to Ruby.

Перейти к: навигация, поиск
Изображение:HeyLook.png Оригинал этой страницы находится по адресу: http://poignantguide.net/ruby/chapter-4.html#section1

Лист, как признак статуса в Амброзии

Alright, Elf. Give us a quick rundown of the currency issues you’ve faced there in your kingdom.

the.elf-3.gif

-- Ну, когда-то мы использовали вместо денег синие кристаллы... но тут слишком темно, чтобы различить синие предметы :)

-- Да, но вы можете хранить деньги в плавках и не беспокоиться...

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

Да, все было иначе. Этот Эльф постоянно слал мне сообщения на пейджер. И когда я не позвонил, он оставил еще одно. Точнее дело было так: он пропищал и напечатал что-то на небольшом листе бумаги. На нем было напечатано что-то вроде “Вали сюда быстрее!” и Нам необходимо избавить Землю от этих гусениц-предпренимательниц, эти чертовы твари жрут мои кристаллы!”

Позднее курс кристаллов по отношению к листьям упал. Теперь он соотносится как один лист к пяти кристаллам. То есть, вот так:

blue_crystal = 1
leaf_tender = 5

Подобный пример, конечно же, явно должен быть в последних главах. Но все же, это только начало. Мы определили две переменные. Знак равенства используется как оператор присвоения.

Теперь переменная leaf_tender имеет значение 5 (как: 5 кристаллов.) Эта концепция -- половина Ruby. Мы определяем переменные. Мы создаем. Это половина работы. Присвоение -- самая простая форма определения.

Эльф, ты же не можешь жаловаться? Ты построил Империю на обмене своих кристаллов в этом лесу с насекомыми. (И хотя для нас он просто Эльф, для них он -- высоченный монстр.)

the.elf-4.jpg

-- Точно, why. Это по мне. (1)

-- Добро пожаловать в Animal Perfect LLC! (2)

-- Я вложил все свои кристаллы в Animal Perfect! Хочешь, я сделаю тебе обезьяну со звездой во лбу? (3)

Не-не-не. Секундочку. Вы еще не знаете, что Эльф творит в своих подземельях. Вы сочтете это бесчеловечным, мерзким, в общем, просто бее...

Теперь вы прослушаете Определение Миссии Animal Perfect, потому что мы никуда не спешим, верно?

Задолго до катеров у меня была беговая лошадь, споткнувшаяся на бегу. Она десять раз перевернулась и вписалась в парня, который нес полный кувшин майонеза. Кровь и майонез были по всему трэку. Это была катастрофа, и говорить нечего.

sidebar!
sidebar!

Мы посмотрели на нее и я готов был поклясться, что ходить больше она не будет. У нее не было ног и мы едва смогли ее усадить. Мы тогда разделились на две группы. Тех, кто не спорил с доктором, и тех, кто был слишком упрям, чтобы согласиться с заключением врача. Ко второй группе принадлежали только я да Эльф.

И пока другие сваливали трофеи и прочую утварь рядом с бедной лошадью, прощаясь с ней, прежде чем пуля возвратила бы ее к истокам, мы с Эльфом решили порыть в Сети ответ на наш вопрос. Мы взяли дело в свои руки и обработали ее раны. И у нас снова была лошадь с нарядной заморозкой во все брюхо.

Она жила долго и счастливо, бегала тут и там и была, возможно, самым счастливым жителем Пещер.

Animal Perfect теперь является будущим на рынке модернизации животных. Они собирают новых животных из, пардон, членов старых. Конечно, все начало получаться не сразу. Когда Animal Perfect только основали, к нам приходил медведь, а уходил медведь в солнечных очках. В общем, мы делали полную чушь.

А потом был краб с собственным реактивным джет-паком. Теперь мы называем эту модель JetCrab 2004.

Теперь это просто работающий конвейер. И чистота здесь потрясающая. Все оборудование сияет. Все покрыто хромом. И весь персонал прячет оружие. Они обучены убивать всех непрошенных гостей. Ну а когда у них кончаются пули, они просто запугивают этих гостей пистолетами.

Эльф, сделай мне обезьяну со звездой во лбу?

the.elf-5a.jpg

-- Мы пробили в потолке дырку в форме звезды! Они падают, мы ловим! (1)

-- А потом пойманные звезды ожидают обезьян в нашей машине! (2)


Представим такой Ruby код:

pipe.catch_a_star


Переменная pipe. Метод catch_a_star. Масса Рубистов называют метод сообщением. Все, что идет после точки, Ruby считает сообщением, адресованным объекту. Сообщение выше говорит трубе поймать звезду.

Это вторая часть Ruby. Вещи приводятся в движение. Вы создаете и определяете их, заставляя их действовать сообща.

  1. Defining things.
  2. Putting those things into action.

Ну, а что если код, ловящий звезду, работает? Дальше что?

captive_star = pipe.catch_a_star

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

Самое главное -- научиться грамотно использовать возвращаемые методами значения. the.elf-5b.jpg

Теперь чуть ускоримся.

starmonkey = ratchet.attach( captive_monkey, captive_star )

Храповик получает сообщение attach (зафиксировать, прикрепить). Что именно прикрепляется? Смотрим на аргументы метода: captive_monkey (обезьяна) и captive_star (пойманная звезда). А возвращаем мы starmonkey (озвезденелую обезьяну?), которую мы решили сохранить для будущих поколений.

the.elf-5c.gif

-- Да здравствует Animal Perfect! (1)

-- Да, а еще мы приклеили лягушку им на правую руку. Для ловкости. Как петрушку. (2)

А теперь соберем все вместе.

starmonkey = ratchet.attach( captive_monkey, pipe.catch_a_star ) + deco_hand_frog

Видите, как используется pipe.catch_a_star в качестве аргумента метода? Звезда будет передана храповику. И не надо выискавать место под нее. Просто передайте ее туда.

Майкл Клишин 04:59, 8 декабря 2006 (EET)

Личные инструменты