Учитывая
data = [{
k: [{id: 'abc'}, {id: 'bcd'}, {id: 'cde'}],
o: [{id: 'ede'}, {id: 'qpl'}, {id: 'ged'}]
}]
, вы спросили, можно ли создать следующий экземпляр класса Test
(#
в начале не показан, и я вставил запятую в конце второй строки):
<Test:0x00005628978c1e30 @k=['abc', 'bcd', 'cde']
@o=#<Test:0x00005628978c1e31 @b=['ede', 'qpl'],
@id='teq' >>
Это выглядит странным запросом, но это можно сделать следующим образом.
class Test
end
t = Test.new
#=> #<Test:0x0000000001eb9c58>
t.instance_variable_set("@b", data.first[:o][0,2].flat_map(&:values))
#=> ["ede", "qpl"]
t
#=> #<Test:0x0000000001eb9c58 @b=["ede", "qpl"]>
t.instance_variable_set("@id", 'teq')
#=> "teq"
t.instance_variables
#=> [:@b, :@id]
t
#=> #<Test:0x0000000001eb9c58 @b=["ede", "qpl"], @id="teq">
test = Test.new
#=> #<Test:0x0000000001e9ad58>
test.instance_variable_set("@k", data.first[:k].flat_map(&:values))
#=> ["abc", "bcd", "cde"]
test
#=> #<Test:0x0000000001e9ad58 @k=["abc", "bcd", "cde"]>
test.instance_variable_set("@o", t)
#=> #<Test:0x0000000001eb9c58 @b=["ede", "qpl"], @id="teq">
test.instance_variables
#=> [:@k, :@o]
test
#=> #<Test:0x0000000001e9ad58 @k=["abc", "bcd", "cde"],
# @o=#<Test:0x0000000001eb9c58 @b=["ede", "qpl"], @id="teq">>