Двадцать минут растягиваются уже на несколько дней. Праздники, выходные, лень
Продолжаем двадцатиминутный курс. Надеюсь irb уже у всех запущен. Итак, мы научились приветствовать мир, научились складывать числа, умножать, возводить в степень и т.п. Это легко. А что если мы хотим сказать миру привет много раз? Да ещё и так, чтобы не устать от постоянных puts “Hello world”. Надо определить метод.
irb(main):010:0> def h
irb(main):011:1> puts “Hello World!”
irb(main):012:1> end
=> nil
def h – это начало определения метода h. Ruby это понимает и внимает вашим дальнейшим командам. Следующая строка содержит уже “тело” самого метода. В нашем случае оно из этой единственной строки и состоит – puts “Hello World”. Это то, что будет делать наш метод. Ну и end, естественно, показывает, что определение метода завершено. Ruby говорит нам => nil, давая понять, что всё понял
Идём дальше, методы – штука полезная
irb(main):013:0> h
Hello World!
=> nil
irb(main):014:0> h()
Hello World!
=> nil
Всё просто. Не сложнее, чем определить этот метод. Если метод не принимает параметров – одного его названия достаточно для вызова. Можно конечно добавит пустые скобки – h(), но в Ruby это не обязательно.
Теперь, если мы хотим поприветствовать только одного человека, но не весь мир – просто переопределим наш метод:
irb(main):015:0> def h(name)
irb(main):016:1> puts “Hello #{name}!”
irb(main):017:1> end
=> nil
irb(main):018:0> h(“Matz”)
Hello Matz!
=> nil
Работает. Давайте посмотрим как это получилось.
Управляющие конструкции в строке
Итак, что такое #{name}? Это простой способ вставить что-то в строку “извне”. Это “что-то” автоматически преобразуется в строку (если нужно). Усложним задачу – выведем имя с заглавной буквы, если кто-то забыл это сделать.
irb(main):019:0> def h(name = “World”)
irb(main):020:1> puts “Hello #{name.capitalize}!”
irb(main):021:1> end
=> nil
irb(main):022:0> h “chris”
Hello Chris!
=> nil
irb(main):023:0> h
Hello World!
=> nil
Опять можно увидеть особенности руби. Во-первых, снова вызываем метод без скобок – h “chris”. Если то, что вы делаете – очевидно, то скобки не требуются. Их используют в сложных конструкциях. Другая деталь – определение переменной по умолчанию. То есть если методу не передан параметр, то name по умолчанию будет означать World
Расширяем возможности
Если хотим получить нечто большее, чем простой метод – стоит обратиться к ООП (объектно-ориентированное программирование). Создадим класс:
irb(main):024:0> class Greeter
irb(main):025:1> def initialize(name = “World”)
irb(main):026:2> @name = name
irb(main):027:2> end
irb(main):028:1> def say_hi
irb(main):029:2> puts “Hi #{@name}!”
irb(main):030:2> end
irb(main):031:1> def say_bye
irb(main):032:2> puts “Bye #{@name}, come back soon.”
irb(main):033:2> end
irb(main):034:1> end
=> nil
Здесь мы использовали новое слово – class. Оно определяет новый класс Greeter и предшествует тем методам, которые будут в нём использоваться. Также обратите внимание на @name. Это переменная для объекта класса и доступна для всех его методов. Что дальше? Дальше попробуем использовать этот класс, но это будет завтра.
Постовой: (то есть навязчивая реклама)
Близятся длинные каникулы, проведи новый год в карпатах.
Будут красиво смотреться на руке: breitling replica.
Если не раскрутить сайт – останетесь без клиентов.




