В вашем коде есть две ошибки:
Вы индексируете неверную таблицу
Вы звоните setmetatable
на Check
, а не на Check.InvitedMembers
. Чтобы исправить свой код, вы должны написать
print(Check.Sans)
, и вы получите сообщение об ошибке «Мы не приглашены»
Вы выдаваете ошибку слишком рано
В вашем l oop вы либо return
, либо выбрасываете ошибку, поэтому вы никогда не пройдете первую итерацию.
Если вы хотите исправить l oop, вы ' Я должен написать это так:
for i ,v in pairs(t.InvitedMembers) do
if i == k then
return "This way"
end
end
error("You're not invited by us")
, то есть пробежаться по списку и сразу же вернуться, когда имя будет найдено, но не ошибаться, пока не закончите со всем списком.
Но лучший способ исправить это - просто сделать следующее:
local Filter = {
__index = function(t,k)
if t.InvitedMembers[k] then
return "This way"
else
error("You're not invited by us")
end
end
}
Поскольку при индексации таблиц с ключом, которого у них нет, просто возвращается nil
, так что вы можете легко найти вне, если ключ существует в таблице.