Я не знаком с Луа, но Википедия, кажется, думает, что она напечатана уткой.Я собираюсь провести аналогию с Python, поэтому простите меня, если это не подходит.
В Python функции разрабатываются по принципу, что им нужен объект, который соответствует определенным критериям.Если вы передаете объект, отличный от того, который предполагал первоначальный автор, при условии, что он соответствует критериям функции, он должен работать.Идея в том, что «если это выглядит как утка, ходит как утка и крякает как утка, то это утка».(Отсюда и название.) Тем не менее, есть несколько редких случаев, когда вам нужен объект определенного типа, но это не общий случай.
В любом случае, выкажется, "борется с языком", что является запахом кода в моей книге.Большинство языков спроектированы и предназначены для использования определенным образом - выясните, какие принципы и рекомендации по дизайну / кодированию использует сообщество Lua, и следуйте им.