Зверёк Харьковский (zverok_kha) wrote in pguide_ru,
Зверёк Харьковский
zverok_kha
pguide_ru

3.2 - части речи (продолжение)

продолжение перевода главы 3.2. начало здесь.

Методы

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

front_door.open
В этом коде, open - это метод. Это действие, глагол. Иногда встречаются несколько действий, объединенных в цепочку.

front_door.open.close
Мы сказали компьютеру открыть дверь и тут же закрыть ее.

front_door.is_open?
Это тоже действие. Мы сказали компьютеру проверить, открыта ли дверь. Можно назвать этот метод Door.test_to_see_if_its_open, но is_open? короче и настолько же верно. И вопросительные, и восклицательные знаки можно использовать в именах методов.

Аргументы метода

Методу может потребоваться больше информации для выполнения действия. Если мы хотим, чтобы компьютер покрасил дверь, ему понадобится цвет.

Аргументы методов прилепляются к концу метода. Аргументы обычно окружены скобками и разделены запятыми.

front_door.paint( 3, :red )
Этот код покрасит дверь тремя слоями красной краски.

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

Как лодка может тянуть несколько камер, так и методы с аргументами тоже могут склеиваться в цепочки.

front_door.paint( 3, :red ).dry( 30 ).close()
Этот код красит дверь тремя слоями красной краски, сушит ее 30 минут, потом закрывает. Хотя у последнего метода нет аргументов, все равно можно поставить скобки. Таскать за собой пустую покрышку бессмысленно, так что скобки обычно отбрасывают.

Некоторые методы (например, print) - это базовые методы, методы ядра. Они используются в Ruby очень часто. Поскольку они такие распространенные, точка здесь не используется.

print "Смотри-ка, никакой точки."
Методы класса

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

Door::new( :oak )
As seen above, the new class method is most often used to create things. In the above example, we’re asking Ruby to make a new oak door for us. Of course, Ruby has to have an understanding of how to make a door—as well as a wealth of timber, lumberjacks, and those long, wiggily, two-man saws.

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

Все усыпано хрустящим беконом
(- Хрустящий бекон! - Хрустящий бекон! - Хрустящий бекон! - Хрустящий бекон! - Хрустящий бекон!)

Глобальные переменные

Переменные, которые начинаются со знака доллара - глобальные.

Например, $x, $1, $chunky и $CHunKY_bACOn.

Большинство переменных - по природе своей временные. Некоторые части вашей программы - вроде как домики. Вы заходите, и там есть свои переменные. В одном домике dad (отцом) может быть Арчи, бродячий торговец и сборщик скелетов. В другом доме, dad может оказаться Питером, укротителем львов и любителем фланели. В каждом домике свой dad.

Глобальные же переменные гарантируют, что значение переменной одинаковое для всех домиков. Знак доллара тут очень уместен. В каждом американском доме уважают знак доллара. Он сводит нас с ума. Постучите в любую американскую дверь и предложите им денег. Уверен, что реакция будет совсем не та, что если бы вы предложили им Питера, укротителя львов и любителя фланели.

Глобальные переменные могут использоваться в любом месте вашей программы. Они всегда в поле зрения.

Переменные экземпляра

Переменные, начинающиеся с символа "at" ("собака" по-русски) - это переменные экземпляра.

Например, @x, @y, или @only_the_chunkiest_cut_of_bacon_I_have_ever_seen. (к слову, название последней переменной можно читать как @самый_хрустящий кусочек_бекона_из_всех_что_я_видел - прим.перев.)

Эти переменные обычно используют, чтобы определить свойство чего-нибудь. Например, можно указать для Ruby ширину front_door (входной двери), установив переменную @width внутри front_door. Переменные экземпляра используются в Ruby для указания характеристик отдельных объектов.

Можно считать, что символ "at" - сокращение от "attribute" ("свойство").

Переменные класса

Переменные, которые начинаются с двойной "собаки" - переменные класса.

Например, @@x, @@y или @@i_will_take_your_chunky_bacon_and_raise_you_two ("я беру хрустящий бекон и повышаю вас обоих в должности").

Переменные класса тоже используются для определения свойств, но свойств не отдельного объекта, а множества похожих объектов. Если переменные экземпляра определяют свойства для единственной front_door, то переменные класса - для всего, что является Door (дверью).

"Двойное at" можно читать как "attribute all" ("свойство всех"). Ну, или можно представлять себе "AT-AT" из "Звездных Войн", по управлением Ruby ("All Terrain Armored Transport" - "Бронированный вездеход" с четырьмя ногами - прим.перев.)

Дааа! Хрустящий бекон достигнут!
(— Уррра! Уж не знаю, что такое "хрустящий бекон", но мы это сделали! — Мы в книге!)
  • Post a new comment

    Error

    default userpic
  • 3 comments
спаибо за труд, который вы делаете. Пробовал читать книгу в оригинале, но там реально мозг сломаешь. Вы тонко понимаете обороты и самое главное терминологию
По моему, вот в это предложении: "Представьте это как автомобильную покрышку, на которой метод тащит за собой дополнительные инструкции." сложно понять, о чем речь. Лучше сказать как-то так: "Представьте, что метод - это лодка, которая тащит за собой автомобильную покрышку". Да, и, скорее, не покрышку, а камеру (на покрышке особенно не покатаешься).
принято! :) /чё-то я глянул, как раз в этом разделе текст перевода совсем плохой, поковыряю его ещё на досуге/