Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
# Изменения будут сохранены.endВнутри транзакции можно вызвать метод
rootsroot?deletestore.transaction do |s| list = s.roots # ["my_array","my_hash"] if s.root?("my_tree") puts "Найдено my_tree." else puts "He найдено # my_tree." end s.delete("my_hash") list2 = s.roots # ["my_array"]end10.2.5. Работа с данными в формате CSV
CSV (comma-separated values — значения, разделенные запятыми) — это формат, с которым вам доводилось сталкиваться, если вы работали с электронными таблицами или базами данных. К счастью, Хироси Накамура (Hiroshi Nakamura) написал для Ruby соответствующий модуль и поместил его в архив приложений Ruby.
Имеется также библиотека FasterCSV, которую создал Джеймс Эдвард Грей III (James Edward Gray III). Как явствует из названия, она работает быстрее, к тому же имеет несколько видоизмененный и улучшенный интерфейс (хотя для пользователей старой библиотеки есть «режим совместимости»). Во время работы над книгой велись дискуссии о том, следует ли сделать библиотеку FasterCSV стандартной, заменив старую библиотеку (при этом ей, вероятно, будет присвоено старое имя).
Ясно, что это не настоящая база данных. Но более подходящего места, чем эта глава, для нее не нашлось.
Модуль CSV (
csv.rb• разделитель записей: CR + LF;
• разделитель полей: запятая (,);
• данные, содержащие символы CR, LF или запятую, заключаются в двойные кавычки;
• двойной кавычке внутри двойных кавычек должен предшествовать еще один символ двойной кавычки ("→"");
• пустое поле в кавычках обозначает пустую строку (данные,"",данные);
• пустое поле без кавычек означает NULL (данные,,данные).
В настоящем разделе мы рассмотрим лишь часть функциональных возможностей библиотеки. Этого достаточно для введения в предмет, а самую актуальную документацию, как всегда, можно найти в сети (начните с сайта ruby-doc.org).
Начнем с создания файла. Чтобы вывести данные, разделенные запятыми, мы просто открываем файл для записи; метод open передает объект-писатель в блок. Затем с помощью оператора добавления мы добавляем массивы данных (при записи они преобразуются в формат CSV). Первая строка является заголовком.
require 'csv'CSV.open("data.csv","w") do |wr| wr << ["name", "age", "salary"] wr << ["mark", "29", "34500"] wr << ["joe", "42", "32000"] wr << ["fred", "22", "22000"] wr << ["jake", "25", "24000"] wr << ["don", "32", "52000"]endВ результате исполнения этого кода мы получаем такой файл
data.csv"name","age","salary""mark",29,34500"joe",42,32000"fred",22,22000"jake",25,24000"don",32,52000Другая программа может прочитать этот файл:
require 'csv'CSV.open('data.csv', ' r') do |row| p rowend# Выводится:# ["name", "age", "salary"]# ["mark", "29", "34500"]# ["joe", "42", "32000"]# ["fred", "22", "22000"]# ["jake", "25", "24000"]# ["don", "32", "52000"]Этот фрагмент можно было бы записать и без блока, тогда метод
openshiftВ библиотеке есть и более развитые средства, а также вспомогательные методы. Для получения дополнительной информации обратитесь к сайту ruby-doc.org или архиву приложений Ruby.
10.2.6. Маршалинг в формате YAML
Аббревиатура YAML означает «YAML Ain't Markup Language» (YAML — не язык разметки). Это не что иное, как гибкий, понятный человеку формат хранения данных. Он напоминает XML, но «красивее».
Затребовав директивой
requireyamlto_yamlrequire 'yaml'str = "Hello, world"num = 237arr = %w[ Jan Feb Mar Apr ]hsh = {"This" => "is", "just a"=>"hash."}
