Ruby/Начало работы

Начало работыПравить

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

Об установке и настройке рабочей среды Ruby читайте приложение Установка .

Программы на языке Ruby это текстовые файлы, не подлежащие компиляции. Для их исполнения нужен интерпретатор, который мы уже установили. Чтобы запустить программу на Ruby, необходимо вызвать интерпретатор и передать ему имя файла с программой в качестве параметра.

Чтобы запустить программу с именем Test_program.rb (программы на Ruby обычно имеют расширение .rb), в UNIX нужно вызвать консоль и набрать:

ruby Test_program.rb

Чтобы запустить программу из Windows нужно дважды кликнуть на файл с программой. Чтобы окно не исчезало и были видны результаты надо перед местами выхода из программы поставить команду ожидания ввода

STDIN.getc
 

Именам программ в Windows принято давать расширение .rbw, что позволяет использовать Windows-версию интерпретатора rubyw, который надоедающее окошко просто не вызывает. Интерпретатор ruby предназначен для работы в консоли. Для интерпретатора rubyw вставлять код STDIN.getc перед местами выхода бесполезно.

Первая программаПравить

Откройте редактор и напишите программу. По традиции первая программа должна просто выводить приветствие миру:

puts "Hello, World!"

Сохраните её в файл helloworld.rb и запустите. На экране будет красоваться надпись:

Hello, World!

На этом традиционную часть можно считать выполненной.

Полигон для испытания программПравить

Чтобы посмотреть результат выполнения большинства примеров из учебника, не обязательно создавать файл. Достаточно использовать полигон для испытания программ на Ruby irb, который входит во все дистрибутивы и сам написан на Ruby. Запускается он командой

irb

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

irb(main):001:0> [1, 2, 3, 4]
=>[1, 2, 3, 4]

Поскольку любая функция в Ruby может быть переопределена в любой момент, важнейшая часть написания большинства небольших программ — это именно эксперименты на полигоне. Посмотрим, например, какие есть методы у обычной строки:

irb(main):002:0> "text".methods
=>["methods", "instance_eval", "%", "rindex", "map", "<<", "split", "any?", …

Или посчитаем:

irb(main):003:0> 14 * 5
=>70

Для выхода с полигона — набрать exit.

По причине того, что интерактивный терминал (полигон) поддерживает автозаполнение при введении табуляции, исходные тексты программ на Ruby принято «отбивать» пробелами (чтобы текст программы можно было просто скопировать в терминал и увидеть, как он работает). Если в irb скопировать программу, «отбитую» табуляциями, интерактивный терминал будет прерывать каждую строчку ввода чтобы предложить варианты автозаполнения.

fxri: полигон и справочникПравить

 
Внешний вид программы fxri

В последних версиях дистрибутива «Установка за один щелчок» для Windows появилась утилита fxri. Это кроссплатформенное графическое приложение, вобравшее в себя функционал ri и irb. Буковки fx в начале означают использование библиотеки FXRuby. Последние две буквы ri означают Ruby Informer (Информатор о классах и методах в языке Ruby).

У fxri три окна: в левом перечислены все методы c описаниями. Верхнее правое окно рассказывает о выбранном методе. Нижнее правое окно реализует программу irb, описанную выше.

ruby browserПравить

 
Внешний вид Ruby Browser

Если вы работаете на Linux, вероятно в репозитории вашего дистрибутива найдется Ruby Browser. Приложение позволяет просматривать встроенную документацию на классы и модули Ruby. Та же документация доступна через консольную команду ri.


puts 2.0 + 1.0

Комментарии и демонстрация результатаПравить

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

В Ruby знаком начала комментария служит #. Всё, что между ним и концом строки, пропускается. Пример:

puts 2 + 2        # это комментарий
puts "Привет!"    # тоже комментарий

Многострочные комментарии помещаются между словами =begin и =end

=begin
Это длинный комментарий
Очень длинный
=end
puts "Привет!"

Результат иллюстрируемого кода будет располагаться после последовательности #=>. Пример:

puts 2 + 2       #=> 4
puts "Привет"    #=> Привет

Вывод на экранПравить

В Ruby есть много методов вывода: print, printf, p, puts, .display и другие. Но мы использовать будем два:

  • метод puts. После вывода строки осуществляет переход на новую. Если приходится выводить объект, не являющийся строкой, то puts вызывает метод .to_s для преобразования его к строке;
  • метод p. Имеет самое короткое название, из-за чего часто используется для отладки. Так же, как и puts, делает перевод на новую строку после вывода. Перед выводом любого объекта (в том числе и строки) на экран, вызывает метод .inspect.

Примеры вывода на экран:

puts [1, 2, 3, 4]    #=> 1\n2\n3\n4
                     # \n означает перевод строки
p [1, 2, 3, 4]       #=> [1, 2, 3, 4]
puts "Hello!"        #=> Hello!
p "Hello!"           #=> "Hello!"
puts 5               #=> 5
p 5                  #=> 5

Как видно из примера, результаты во время вывода строк и массивов существенно различаются. Если вас не смущают кавычки в результате вывода, то смело используйте p, если смущают, то puts.

 

Иногда возникает ситуация, когда при попытке вывода на экран русскоязычной строки при помощи метода p выводится непонятный код вида

"\323\367\350\362\345 \320\363\341\350!"

Чтобы избежать таких ситуаций следует поместить в начало программы следующий программный код:

$KCODE = "u"

Кодировка UTF-8 используется в SciTE. При использовании других редакторов, может потребоваться смена кодировки на соответствующую (зависит от редактора и операционной системы)

(Для версии ruby1.9.1. вместо
$KCODE="u"
используется "умный комментарий":
# coding: utf-8

который следует добавить в начало программы - прим. Sharipov.ru)