Статьи

Изучите Ruby on Rails: учебник для начинающих

Взаимодействие с объектами Ruby

Привыкание к мышлению с точки зрения объектов может занять некоторое время. Давайте рассмотрим несколько различных типов объектов и посмотрим, как мы можем взаимодействовать с ними.

Литеральные объекты

Литеральные объекты — это символьные строки или числа, которые появляются непосредственно в коде, как и число 1, которое было возвращено в предыдущем разделе. Мы видели цифры в действии; Далее давайте посмотрим на строковый литерал.

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

irb> "The quick brown fox"
=> "The quick brown fox"

Сначала мы подтвердим, что наш строковый литерал действительно принадлежит классу String

 irb> "The quick brown fox".class
=> String

Этот объект String обладает множеством встроенных функций. Например, мы можем определить количество символов, которые содержит наш строковый литерал, отправив ему сообщение длины:

 irb> "The quick brown fox".length
=> 19

Легко, а?

Переменные и константы

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

Константа — это объект, которому присваивается значение один раз и только один раз (обычно при запуске приложения). Следовательно, константы используются для хранения информации, которую не нужно изменять в работающем приложении. Например, константа может использоваться для хранения номера версии приложения. Константы в Ruby всегда пишутся заглавными буквами, как показано ниже:

 irb> CONSTANT = "The quick brown fox in a constant"
=> "The quick brown fox in a constant"
irb> APP_VERSION = 5.04
=> 5.04

Переменные, напротив, являются объектами, которые могут изменяться в любое время. Они могут даже быть сброшены в ничто, что освобождает пространство памяти, которое они ранее занимали. Переменные в Ruby всегда начинаются со строчной буквы:

 irb> variable = "The quick brown fox in a variable"
=> "The quick brown fox in a variable"

Есть еще одна особенная (и, можно сказать, злая) вещь о переменной — ее область действия. Область видимости переменной — это часть программы, для которой переменная является видимой. Если вы попытаетесь получить доступ к переменной из-за пределов ее области (то есть из части приложения, для которой эта переменная не видна), вы, как правило, не сможете.

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

Давайте вернемся к строковому буквальному примеру, который мы видели ранее. Присвоение String переменной позволяет нам вызывать для этой переменной те же методы, которые мы вызывали для строкового литерала ранее:

 irb> fox = "The quick brown fox"
=> "The quick brown fox"
irb> fox.class
=> String
irb> fox.length
=> 19

Пунктуация в рубине

Использование знаков препинания в коде Ruby сильно отличается от других языков, таких как Perl и PHP, поэтому поначалу может показаться странным, если вы привыкли программировать на этих языках. Тем не менее, если у вас под рукой есть несколько основ, пунктуация в Ruby начинает казаться довольно интуитивной и может значительно улучшить читаемость вашего кода.

Точечная запись

Одним из наиболее распространенных знаков препинания в Ruby является точка (.). Как мы уже видели, Ruby использует точку для отделения получателя от отправляемого ему сообщения в форме Object.receiver

Если вам нужно закомментировать строку, либо для целей документирования, либо для временного удаления строки кода из потока программы, используйте хеш-знак (#). Комментарии могут начинаться в начале строки или появляться дальше, после некоторого кода Ruby:

 irb> # This is a comment. It doesn't actually do anything.
irb> 1 # So is this, but this one comes after a statement.
=> 1
irb> fox = "The quick brown fox"    # Assign to a variable
=> "The quick brown fox"
irb> fox.class                      # Display a variable's class
=> String
irb> fox.length                     # Display a variable's length
=> 19

Цепные утверждения вместе

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

Если вы объедините несколько операторов вместе в интерактивной оболочке, на экран будет выведен только результат последней выполненной команды:

 irb> fox.class; fox.length; fox.upcase
=> "THE QUICK BROWN FOX" 

Использование круглых скобок

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

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

 irb> fox.class()
=> String
irb> fox.class
=> String

Обычной практикой является включение скобок для вызовов методов с несколькими аргументами, таких как метод insertString

 irb> "jumps over the lazy dog".insert(0, 'The quick brown fox ')
=> "The quick brown fox jumps over the lazy dog"

Этот вызов вставляет второй аргумент, переданный объекту insert"The quick brown fox "String"jumps over the lazy dog" Позиция 0 относится к самому началу строки.

Обозначение метода

До сих пор мы рассматривали случаи, когда Ruby использует меньше знаков препинания, чем его конкуренты. На самом деле, Ruby активно использует выразительную пунктуацию, когда дело доходит до именования методов.

Как мы уже видели, обычное имя метода представляет собой простую буквенно-цифровую строку символов. Если метод имеет потенциально деструктивную природу (например, он напрямую изменяет принимающий объект, а не изменяет его копию), к нему обычно добавляется восклицательный знак (!).

В следующем примере метод upcase иллюстрирует этот момент:

 irb> fox.upcase
=> "THE QUICK BROWN FOX"
irb> fox
=> "The quick brown fox"
irb> fox.upcase!
=> "THE QUICK BROWN FOX"
irb> fox
=> "THE QUICK BROWN FOX"

Здесь содержимое переменной fox было изменено в upcase! метод.

Пунктуация также используется в именах методов, которые возвращают логические значения. Логическое значение — это значение true или false; эти значения обычно используются как возвращаемые значения для методов, которые задают вопросы да / нет. Такие методы заканчиваются знаком вопроса, который хорошо отражает тот факт, что у них есть ответы да / нет:

 irb> fox.empty?
=> false
irb> fox.is_a? String
=> true

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

Перейти на страницу: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10