Книга: Программирование на языке Ruby

10.1.24. Работа со строкой как с файлом

10.1.24. Работа со строкой как с файлом

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

Объект определяется прежде всего своими методами. В следующем фрагменте показано, как к объекту source применяется итератор; на каждой итерации выводится одна строка. Можете ли вы что-нибудь сказать о типе объекта source, глядя на этот код?

source.each do |line|
 puts line
end

Это могли бы быть как файл, так и строка, содержащая внутри символы новой строки. В таких случаях строку можно трактовать как файл без всякого труда.

В последних версиях Ruby имеется также библиотека stringio.

Интерфейс класса StringIO практически такой же, как в первом издании этой книги. В нем есть метод доступа string, ссылающийся на содержимое самой строки.

require 'stringio'
ios = StringIO.new("abcdefghijklnABCn123")
ios.seek(5)
ios.puts("xyz")
puts ios.tell        # 8
puts ios.string.dump # "abcdexyzijklnABCn123"
с = ios.getc
puts "с = #{c}"      # с = 105
ios.ungetc(?w)
puts ios.string.dump # "abcdexyzwjklnABCn123"
puts "Ptr = #{ios.tell}"
s1 = ios.gets        # "wjkl"
s2 = ios.gets        # "ABC"

Оглавление книги

Оглавление статьи/книги

Генерация: 1.728. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз