Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
filename = nillines = 0 # По умолчанию вывод не усекается.loop do begin opt, arg = parser.get break if not opt # Только для отладки... puts (opt +" => " + arg) case opt when "-h" puts "Usage: ..." break # Прекратить обработку, если задан флаг -h. when "-f" filename = arg # Запомнить аргумент - имя файла. when "-l" if arg != "" lines = arg # Запомнить аргумент - число строк (если задан). else lines = 100 # Оставляемое по умолчанию число строк. end end rescue => err puts err break endendputs "имя файла = #{filename}"puts "число строк = #{lines}"Метод
getnilВ этом примере мы перехватываем исключения. Всего их может быть четыре:
•
AmbiguousOption•
InvalidOption•
MissingArgument•
NeedlessArgumentСообщения об ошибках обычно выводятся на
stderrquiet=trueБиблиотека
getoptlongСуществуют другие библиотеки, например
OptionParser14.2.2. Константа ARGF
Глобальная константа
ARGFIOКогда в программе встречается «голый» метод ввода (без указания вызывающего объекта), обычно имеется в виду метод, подмешанный из модуля
KernelgetsreadlinesstdinЕсли хотите, можете обращаться к
ARGF# Скопировать все файлы на stdout.puts ARGF.readlinesБыть может, вопреки ожиданиям, признак конца файла устанавливается после каждого файла. Так, предыдущий код выведет все файлы, а следующий — только первый файл:
until ARGF.eof? puts ARGF.getsendЯвляется ли это ошибкой, предоставим судить вам. Впрочем, сюрпризы могут быть и приятными. Входные данные — не просто поток байтов; мы можем применять к
ARGFseekrewindС константой
ARGFfileIOА если мы не хотим интерпретировать имена аргументов в командной строке как имена файлов? Тогда не надо обращаться к методам ввода без указания вызывающего объекта. Если вы хотите читать из стандартного ввода, укажите в качестве такого объекта
STDIN14.2.3. Константа ARGV
Глобальная константа
ARGVn = ARGV.sizeargstr = '"' + ARGV*"," + '"'puts "Мне было передано аргументов: #{n}..."puts "Вот они: #{argstr}"puts "Заметьте, что ARGV[0] = #{ARGV[0]}"Если запустить эту программу с аргументами
red green blueМне было передано аргументов: 3...Вот они: "red,green,blue"Заметьте, что ARGV[0] = redЯсно, что отдельно передавать число аргументов, как в былые времена, не нужно; эта информация — часть массива.
Привычных к старым соглашениям программистов может смутить также тот факт, что нулевой элемент массива — настоящий аргумент (а не, скажем, имя сценария). Нумерация аргументов начинается с нуля, а не с единицы, как в языке С и в различных интерпретаторах команд.
14.3. Библиотека Shell
Не всегда Ruby удобен в качестве языка сценариев. Например, в языке bash для запуска внешней программы достаточно просто указать ее имя безо всякого дополнительного синтаксиса.
Оборотной стороной мощи и гибкости Ruby является более сложный синтаксис. Кроме того, функциональность разнесена по различным классам, модулям и библиотекам.
