Во-первых, вы должны отформатировать код с использованием стандартного отступа, чтобы было легче разобрать, как человек читает код:
function get_key_for_value(t, value)
for k, v in pairs(t) do
if v == value then
return k
end
return nil
end
end
Внимательно посмотрите на цикл for
.Вы никогда не пройдете первую итерацию, потому что каждая итерация return
с.
Ваша функция будет зафиксирована, если вы переместите return nil
оператор вне цикла.(Хотя для большинства целей это избыточно, потому что, как правило, никакое значение не эквивалентно возвращению nil
).
Ранее Key_To_Remove
было nil
.При передаче nil
в качестве индекса для удаления в table.remove
Lua удаляет последний элемент.Это удобно при работе со списком как со стеком, но в этом случае для вас скрыта ошибка.