Что если мы хотим сказать “Hello” без утомления наших пальцев? Мы должны создать метод!
Код def hi
означает начало объявление метода. Он говорит Ruby, что мы
определяем метод, имя которого hi
. Следующая строка – тело метода, та
же строка, что мы видели раньше: puts "Hello World"
. И, наконец,
последняя строка, end
, говорит Ruby, что мы завершили объявление
метода. Ответ от Ruby, => :hi
, говорит нам, что он понял, что мы
завершили объявление метода. Ответ может быть таким: => nil
, в Ruby
версии 2.0 и ниже, но это здесь не важно, поэтому двинемся дальше.
Кратко о повторяющихся жизнях метода
Теперь давайте попробуем вызвать метод несколько раз:
Ну, это было просто. Вызвать метод в Ruby так же просто, как просто упомянуть его имя в коде. Если метод не принимает параметры – это все что вам нужно сделать. Вы можете добавить пустые скобки, если вам так нравится, но это не обязательно.
Что если мы хотим сказать hello одному человеку, а не всему миру?
Просто переопределим метод hi
, чтобы он принимал имя как параметр.
Итак, это работает… но давайте на секунду задумаемся, что здесь происходит.
Места для интерполяции в String
Что такое #{name}
в коде выше? Это способ Ruby вставить что-либо в
строку. Кусок кода между фигурными скобками превратится в строку (если
это еще не строка) и потом подставится во внешнюю строку в этом месте.
Вы также можете использовать это, чтобы убедиться, что имя будет с
большой буквы:
Вы должны здесь отметить несколько других приемов. Один из них, что мы
опять вызываем метод без скобок. Если очевидно то, что вы хотите сделать
– скобки не обязательны. Другой прием – это параметр по умолчанию
World
. Это означает что, “Если имя не передано в качестве параметра,
используй параметр по умолчанию World
”.
Эволюционируем в Greeter (Приветствующего)
Что если мы хотим создать реального приветствующего, того кто запомнит ваше имя и поприветствует вас и всегда будет относиться к вам с уважением? Вы можете использовать для этого объект. Давайте создадим класс “Greeter”.
Новое ключевое слово здесь - class
. Оно служит для объявления нового
класса, который мы назвали Greeter и несколько методов для этого класса.
Также заметьте @name
. Это переменная объекта и она доступна для всех
методов в классе. Как вы можете видеть, она используется методами
say_hi
и say_bye
.
Итак, как мы сможем заставить этот класс Greeter работать? Создадим объект.