Несколько пар ключ-значение в хэше в Ruby - PullRequest
0 голосов
/ 01 марта 2012

РЕДАКТИРОВАТЬ:

Короче говоря

У меня есть 3 атрибута для одного объекта, и у меня есть около 100 таких объектов.Мне нужна хорошая структура данных для их хранения и эффективного извлечения.

Пример:

Давайте рассмотрим изображение с 100 пикселями.

Каждый пиксельимеет три атрибута - красный, зеленый и синий.Мне нужно хранить все изображение с точки зрения его пикселей и значений RGB в структуре данных, такой как Hash.

Пример структуры данных, о которой я думал, был примерно таким:

x={[:red => 1, :green => 2, :blue => 3],[:red => 21, :green => 21, :blue => 32], [:red => 21, :green => 21, :blue => 32]}

Мой вопрос:

1) Есть ли лучший способ хранить такие наборы данных?2) Существует ли эффективный способ доступа к данным таких наборов?

Другими словами, какой самый простой и эффективный способ хранения нескольких пар ключ-значение наборов данных и эффективный доступ к ним?

Отказ от ответственности: Я новичок в Ruby (прогресс составил около 50%).

Спасибо.

1 Ответ

1 голос
/ 01 марта 2012

Я думаю, это то, о чем вы спрашиваете, поэтому, пожалуйста, уточните, не сошел ли я с базы. Вам нужен быстрый и простой способ взять хеш и превратить его в объект с помощью методов типа x.red, правильно? OpenStruct может быть ответом:

require 'ostruct'
hash = { :red => 1, :green => 2, :blue => 3 }
colorset = OpenStruct.new(hash)

Тогда вы можете позвонить:

colorset.red + colorset.green + colorset.blue

и получите:

=> 6

EDIT:

Основываясь на ваших комментариях, забудьте о вышесказанном, я думаю, вам просто нужны вложенные хэши со значимыми ключами:

colors = { 'fuschia' => { 'red'=> 1 , 'green' => 2, 'blue' => 3 }, 
           'goldenrod' => { 'red'=> 2, 'green' => 3, 'blue'=> 4 } }

Затем получите доступ к таким значениям:

colors['fuschia']['red']
=> 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...