Давайте напишем простую программу на Ruby. Все файлы Ruby будут иметь расширение .rb. Итак, напишите следующий исходный код в файл test.rb.
#!/usr/bin/ruby -w puts "Привет, Ruby!";
Здесь мы предположили, что у вас есть интерпретатор Ruby, доступный в каталоге /usr/bin. Теперь попробуйте запустить эту программу следующим образом:
$ ruby test.rb
Это приведет к следующему результату:
Привет, Ruby!
Вы видели простую программу Ruby, теперь рассмотрим несколько базовых понятий, связанных с синтаксисом Ruby.
Пробельные символы, такие как пробелы и вкладки, обычно игнорируются в коде Ruby, за исключением случаев, когда они появляются в строках. Иногда, однако, они используются для интерпретации неоднозначных утверждений. Интерпретации этого типа вызывают предупреждения, когда опция -w включена.
a + b is interpreted as a+b ( где есть локальная переменная) a +b is interpreted as a(+b) ( Здесь вызов метода)
Ruby интерпретирует точки с запятой и символы новой строки как конец оператора. Однако, если Ruby встречает операторы, такие как +, — или обратная косая черта в конце строки, они указывают на продолжение оператора.
Идентификаторы — это имена переменных, констант и методов. Идентификаторы Ruby чувствительны к регистру. Это означает, что RRam и RAM — два разных идентификатора в Ruby.
Имена идентификаторов Ruby могут состоять из буквенно-цифровых символов и символа подчеркивания (_).
В следующем списке показаны зарезервированные слова в Ruby. Эти зарезервированные слова не могут использоваться как постоянные или переменные имена. Однако они могут использоваться в качестве имен методов.
BEGIN | do | next | then |
END | else | nil | true |
alias | elsif | not | undef |
and | end | or | unless |
begin | ensure | redo | until |
break | false | rescue | when |
case | for | retry | while |
class | if | return | while |
def | in | self | __FILE__ |
defined? | module | super | __LINE__ |
«Here Document» означает строковые строки из нескольких строк. После << вы можете указать строку или идентификатор для завершения строкового литерала, а все строки, следующие за текущей строкой до терминатора, — это значение строки.
Если терминатор цитируется, тип кавычек определяет тип линейного литерала строки. Обратите внимание, что между << и терминатором не должно быть пробелов.
Вот несколько примеров:
#!/usr/bin/ruby -w print <<EOF Это первый способ создания вот документ, т.е. множественные строки. EOF print <<"EOF"; # так же как выше Это второй способ создания вот документ, т.е. множественные строки. EOF print <<`EOC` # выполнение команды echo привет echo много здесь EOC print <<"foo", <<"bar" # вы можете сложить их Я сказал foo. foo IЯ сказал bar. bar
Это приведет к следующему результату:
Это первый способ создания вот документ, т. е. множественные строки. Это второй способ создания вот документ, т.е. множественные строки. привет много здесь Я сказал foo. Я сказал bar.
BEGIN { code }
Объявляет код, который вызывается до запуска программы.
#!/usr/bin/ruby puts "Это основная программа Ruby" BEGIN { puts "Инициализация программы Ruby" }
Это приведет к следующему результату —
Инициализация программы Ruby Это основная программа Ruby
END { code }
Объявляет код, который будет вызываться в конце программы.
#!/usr/bin/ruby puts "Это основная программа Ruby" END { puts "Завершение программы Ruby " } BEGIN { puts "Инициализация программы Ruby" }
Это приведет к следующему результату:
Инициализация программы Ruby Это основная программа Ruby Завершение программы Ruby
Комментарий скрывает строку, часть строки или несколько строк интерпретатора Ruby. Вы можете использовать символ хеша (#) в начале строки:
# Я комментарий. Просто игнорируй меня.
Или комментарий может быть в одной строке после заявления или выражения —
name = "AndreyEx" # Это снова комментарий
Вы можете прокомментировать несколько строк следующим образом:
# Это комментарий. # Это комментарий, anrdeyex. # Это комментарий, andreyex. # Я уже сказал это.
Вот еще одна форма. Этот комментарий блока скрывает несколько строк от интерпретатора с = begin / = end —
= begin Это комментарий. Это комментарий, andreyex. Это комментарий, andreyex. Я уже сказал это. = end