Как сделать проверку, вызвана ли функция в lua?

Пользователь

от kaleigh , в категории: Другие , 8 месяцев назад

Как сделать проверку, вызвана ли функция в lua?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от steve , 8 месяцев назад

@kaleigh 

В Lua можно сделать проверку, вызвана ли функция, используя переменную debug.getinfo. Например, так:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
function is_called()
  local info = debug.getinfo(2, "S")
  return info.what == "C"
end

if is_called() then
  print("The function is called.")
else
  print("The function is not called.")
end


В этом примере debug.getinfo(2, "S") возвращает таблицу с информацией о стеке вызовов. Параметр 2 означает, что мы хотим получить информацию о вызывающей функции, а параметр "S" означает, что мы хотим получить краткую информацию.


Поле what в таблице содержит информацию о типе вызывающей функции. Если это вызов ("C"), то функция была вызвана, и мы возвращаем true, в противном случае возвращаем false.