Хранение данных CVS для дальнейшей манипуляции с использованием Ruby - PullRequest
0 голосов
/ 21 мая 2010

Я имею дело с CSV-файлом, в котором есть некоторая информация о клиенте (электронная почта, имя, адрес, сумма, [shopping_list: элемент 1, элемент 2]).

Я хотел бы поработать с данными и изготовить несколько этикеток для печати ... а также собрать некоторую дополнительную информацию (общее количество, общее количество элементов 1 ...)

Моя главная задача - найти подходящую структуру для хранения данных в ruby ​​для будущих манипуляций. Пока я думал о следующих возможностях:

  1. многомерных массивов: довольно просто построить, но довольно сложно получить доступ к данным красивым рубиновым способом.
  2. хэши: наличие электронного ключа в качестве ключа и сохранение информации в разных хешах (один хеш для имени, другой хеш для адреса, другой хеш для списка покупок ...)
  3. (получение данных cvs в базу данных и работа с данными из ruby ​​??)

Буду очень признателен за ваши советы и рекомендации !!

1 Ответ

2 голосов
/ 21 мая 2010

Как только у вас будет более двух частей информации, которую нужно сгруппировать, пришло время подумать о переходе от общего хеша / массива к чему-то более специализированному.Хорошим кандидатом на то, что вы описали, является struct модуль Ruby :

Customer = Struct.new(:email, :name, :address) # etc.

bill = Customer.new('bill@asdf.com', 'Bill Foo', '123 Bar St.')

puts "#{bill.name} lives at #{bill.address} and can be reached at #{bill.email}"

Вывод:

Bill Foo lives at 123 Bar St. and can be reached at bill@asdf.com

Struct#new просто создает класс сattr_accessor для каждого символа, который вы передаете. Ну, на самом деле это создает немного больше, но для начала это все, о чем вам нужно беспокоиться.

Как только вы получите данные из каждой строкиупакованный в какой-либо объект (будь то struct или ваш собственный класс), затем вы можете беспокоиться о том, как хранить эти объекты.

  • Хеш будет идеальным для произвольного доступа по заданному ключу (возможно, имя клиента или другой уникальный идентификатор).
  • Одномерный массив отлично работает для итерации по всему набору клиентов в одном и том жепорядок их вставки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...