Подпишись на канал фаундера и разработчика экосистемы tonpie
[Решено] Могу ли я динамически добавлять ссылки в тип builder?
-
У меня есть функция, подобная этой:
() save_data_on_update(slice destination_address) impure inline { builder q = begin_cell(); builder qSliceDestinationAddress = q.store_slice(destination_address); builder qRefs = qSliceDestinationAddress.store_ref( begin_cell().store_uint(0, 1).end_cell() ) .store_ref( begin_cell().store_uint(0, 1).end_cell() ) .store_ref( begin_cell().store_uint(0, 1).end_cell() ) .store_ref( begin_cell().store_uint(0, 1).end_cell() ); cell endedQ = qRefs.end_cell(); set_data(endedQ); }
Могу ли я написать подобную функцию?
() save_data_on_update(slice destination_address) impure inline { builder q = begin_cell(); builder qSliceDestinationAddress = q.store_slice(destination_address); builder qRefs = qSliceDestinationAddress; int x = 0; while (x < 5) { x += 1; qRefs.store_ref(begin_cell().store_uint(0, 1).end_cell()); } cell endedQ = qRefs.end_cell(); set_data(endedQ); }
-
С незначительными изменениями вы можете это сделать. В цикле
while
назначьтеqRefs.store_ref
дляqRefs
. На самом деле вам не нужно сохранять ссылки на старый конструктор. Я бы написал это так:() save_data_on_update(slice destination_address) impure inline { builder b = begin_cell(); b = b.store_slice(destination_address); repeat (4) { b = b.store_ref(begin_cell().store_uint(0, 1).end_cell()); } cell c = b.end_cell(); set_data(c); }