Перейти к содержанию

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)