Хорошо, в соответствии с PiL 2.1 — Лексические соглашения это должно быть возможно, поскольку оно не указано в качестве зарезервированного ключевого слова, но оно действительно используется для возврата типа элементов, подобного этому типу («независимо»), и VS Code иногда окрашивает его, а иногда не зависит в контексте... Кроме того, если я делаю что-то подобное local type = "123" print(type), кажется, что в ZeroBrane Studio без проблем печатается "123", но в программе хостинга, для которой я использую скрипт (оба одинаково работают на Lua 5.2), по какой-то причине он выдает следующее ошибка после печати: «попытка вызвать upvalue 'type' (строковое значение)».
Итак, мое замешательство, безопасно ли его использовать, поскольку оно не указано как зарезервированное ключевое слово или нет? А если нет, то почему там не указано? Я всегда старался избегать этого в пользу, например, «доброго» на всякий случай, но теперь я хочу быть уверенным в том, что здесь происходит (если что-то 🙄), и я надеюсь, что это имеет смысл... Спасибо.
Покажите свой код, где вы используете type в качестве повышающего значения, и попробуйте вызвать его. Скорее всего, где-то в коде есть type(...), потому что кто-то ожидает, что type будет встроенной функцией.
@Luke100000 Это Мохо, но я не думаю, что это имеет значение, поскольку он не использует ничего, называемого просто «типом», во всем своем интерфейсе сценариев. Я еще не совсем уверен, но я думаю, что все может иметь больше общего с тем, что говорит Луатик.
@Luatic Итак, проблема здесь в том, что «тип» может быть просто не тем объектом, о котором я думал? Я имею в виду, поскольку его можно использовать в чистом Lua для выполнения действия (возврат типа аргумента), я предположил, что он должен восприниматься языком как зарезервированное ключевое слово, как и в других случаях, но кажется, что тип по какой-то причине просто другой. , не так ли? И выдаст ли он ошибку или нет, будет зависеть от того, попытаетесь ли вы использовать его как обычно после присвоения значения... Пожалуйста, поправьте меня, если я ошибаюсь. Но, в любом случае, где такие объекты перечислены в руководстве, чтобы о них можно было заботиться? Спасибо.
Эти «объекты» — просто функции в глобальной среде. Они перечислены в справочнике. Ни один разумный язык не определяет все свои стандартные библиотечные функции как ключевые слова на синтаксическом уровне.
@Luatic OK; Кажется, я понял... Так что ЗДЕСЬ можно получить список глобальных функций. Ну, я должен был это знать, и вроде бы я знал, но я запутался с этим словом «тип» из-за того, что оно было таким распространенным словом, которое можно было бы использовать в качестве имени переменной или чего-то еще, и я принял это как особый случай или что-то в этом роде. , Но спасибо, что сообщили мне, что это точно так же, как и любой другой!
@Luatic Да (извините, перекрестный комментарий), я думаю, что понял теперь, как я уже сказал, моя ошибка заключалась в том, чтобы думать об этом как о другом виде «объекта», я не знаю (сейчас), почему 🙄. Конечно, все имеет смысл, как есть (сейчас).





Вы только затеняете переменную, это безопасно. Однако я не рекомендую скрывать глобальные переменные. Он подвержен ошибкам (например, вы забыли объявить локальный и внезапно перезаписали тип), и у вас, очевидно, больше нет доступа к этим глобальным переменным. Некоторые IDE также выделяют встроенные функции, что не является проблемой, но отвлекает.
Спасибо за ответ. Теперь я вижу свою ошибку, предполагая, что "тип" является объектом другого типа, чем он есть на самом деле, ну, просто еще одна глобальная функция, как и любая другая... Но теперь я точно знаю, почему я хотел бы избежать использования любого из слова вдоль кода (даже если это возможно, как вы указываете), а не просто избегать его просто для интуиции... Приветствую.
Я проверил ваш код на Lua 5.2, и он отлично работает. Какую программу хостинга вы используете?