Добавлен rsfghd
Объясните, пожалуйста, как правильно сохранять структуру в хэш-таблицу, выгружать оттуда, уничтожать её и всё очищать?
Я попробовал что-то похожее сделать, но я правда без понятия как оно работает
Просто читаю всё что нахожу и пытаюсь как-то сам фигнёй пострадать
Я попробовал что-то похожее сделать, но я правда без понятия как оно работает
Просто читаю всё что нахожу и пытаюсь как-то сам фигнёй пострадать
код
globals
hashtable H = InitHashtable()
endglobals
struct cord
real x
real y
real z
endstruct
function MyFunc1 takes nothing returns nothing
local cord A = LoadInteger(H,0,0)
call BJDebugMsg(R2S(A.x)+" "+R2S(A.y)+" "+R2S(A.z))
call FlushChildHashtable(H,0)
call cord.destroy(A)
endfunction
function MyFunc takes nothing returns nothing
local cord A=cord.create()
set A.x=5
set A.y=8
set A.z=A.y+A.x
call SaveInteger(H,0,0,A)
call MyFunc1()
call BJDebugMsg(R2S(A.x)+" "+R2S(A.y)+" "+R2S(A.z))
endfunction
Принятый ответ
В целом не нужно, я думаю, если ты все поля при создании структуры инициализируешь (я не уверен обнуляет ли их аллокатор)
Структура просто integer потому что в коде в итоге генерирутся параллельные массивы т.е. например
Структура просто integer потому что в коде в итоге генерирутся параллельные массивы т.е. например
real array cord_x
real array cord_y
real array cord_z
unit array cord_u
Для каждого члена структуры. Поэтом сама cord это просто индекс в эти массивы. Когда ты делаешь cord.create() находится свободный индекс в этих "параллельных" массивах и помечается заполненным.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Структура действительно просто integer
Структура просто integer потому что в коде в итоге генерирутся параллельные массивы т.е. например
Отредактирован PT153