заранее не известны название ключей, по этому их надо добавлять в процессе работы.
Пример который работает:
Код: Выделить всё
:local key1 "D04DEA1091709160632421214";
:local key2 "D04DEA34224EB3D99170915112732146";
:local key3 3;
:local key4 4;
:local val1 "MyValue1";
:local val2 "MyValue2";
:local a ({});
:set ($a->$key1) ({});
:set ($a->$key2) ({});
:set ($a->$key1->$key3) $val1;
:set ($a->$key2->$key4) $val2;
:log info $a;
:log info [:len $a];
Код: Выделить всё
D04DEA1091709160632421214=;;;MyValue1;D04DEA34224EB3D99170915112732146=;;;;MyValue2
2
ОК, переношу данную конструкцию в свой код, но работать это перестаёт так как надо.
Весь код показывать не буду из-за размера, но постараюсь донести проблему:
Код: Выделить всё
:global struct;
:local ss ({});
for it from=0 to=([:len $struct] - 1) do={
:if ($struct->$it->"udhi") do={
:local concatenatedName (($struct->$it->"oaLine").($struct->$it->"sctsLine").($struct->$it->"udhOctet1"));
:local concatenatedNum ($struct->$it->"udhOctet3");
:log info $concatenatedName;
:log info $concatenatedNum;
:if ([:typeof ($ss->$concatenatedName)] = "nothing") do={:set ($ss->$concatenatedName) ({});};
:set ($ss->$concatenatedName->$concatenatedNum) $concatenatedNum;
}}
:local l [:len $ss];
:local t [:typeof $ss];
:log info "len ss: $l";
:log info "type ss: $t";
:log info $ss;
:set ($ss->"D04DEA1091709160632421214"->7) "test";
:log info $ss;
Код: Выделить всё
1
D04DEA1091709160632421214
4
D04DEA34224EB3D99170915112732146
2
D04DEA1091709160632421214
1
D04DEA1091709160632421214
3
D04DEA1091709160632421214
2
D04DEA34224EB3D99170915112732146
3
len ss: 2
type ss: array
D04DEA1091709160632421214=;1;2;3;4;D04DEA34224EB3D99170915112732146=;1;2;3;4
D04DEA1091709160632421214=;1;2;3;4;;;test;D04DEA34224EB3D99170915112732146=;1;2;3;4;;;test