Можете ли вы добавить повышение стоимости к закрытию, которое не было создано ни с чем? - PullRequest
1 голос
/ 25 мая 2020

Я пытался изменить адрес Lua Closure, а затем использовать функцию упаковки, которая требует, чтобы ей было передано upvalue функции. Единственная проблема заключается в том, что когда я меняю адрес функции и пытаюсь переместить повышающее значение, это терпит неудачу, поскольку закрытие не имеет выделенного места для каких-либо повышающих значений. Итак, вопрос в том, есть ли способ выделить место для повышения стоимости для уже созданного закрытия? При кодировании это будет выглядеть так:

lua_pushnil(L);//For example
lua_pushcclosure(L, Function, 0);
lua_addupvalue(L, -1, 1);
lua_pushvalue(L, -2);
lua_setupvalue(L, -2, 1);

Мне бы хотелось именно такого метода, надеюсь, аргументы не требуют пояснений. Если у кого-то есть идеи, дайте мне знать. Я уже давно обдумывал это.

...