2016-02-29 3 views
3

Я следующую структуруЛучший способ присвоения значений массива на структуру

Traditional = Struct.new(:a, :b, c:) 
array = [1, 2, 3] 

и массив, содержащий значения всех полей в структуры в том же порядке, как они определены в структура. Каков наилучший способ передачи значений из массива в соответствующие поля структур?

Так что я могу сделать:

my_struct[:a] => 1 
+0

Является ли это действительно необходимо иметь 31 переменные экземпляра, чтобы сделать вашу точку зрения? Как насчет, скажем, 3? Также дайте пример 3-элементного массива и покажите желаемый результат. –

ответ

4

рубин имеет пейнтбольный оператор, который будет делать именно то, что вам нужно:

obj = Traditional.new(*array) 
+0

Вот что я искал ... Спасибо! – db579

+0

Будучи новым для Struct Я думал, что оставляю перевод на английский 'Traditional = Struct.new (: a,: b,: c) array = [9, 2, 3] my_struct = Traditional.new (* array) p my_struct [: a] p my_struct.inspect' –

+0

Ничего. Эта мини-уценка бесполезна. Думаю, мои пять минут славы. Ну что ж, вернемся к работе! –