#lua #expression #statements
#lua #выражение #операторы
Вопрос:
что на самом деле представляют собой выражения и операторы в Lua? часто это не так понятно из-за таких вещей, как выражение vararg ‘…’ и что nil / true / false также являются выражениями.
и являются ли обращения к таблице выражениями? кажется, это имеет смысл, потому что вы не можете просто записать доступ к таблице в файл и ожидать, что он тоже запустится.
Комментарии:
1. откуда берутся сложные выражения?
2. » часто это не так понятно из-за таких вещей, как выражение vararg ‘…’ и что nil / true / false также являются выражениями». Что в этом непонятного? Кроме того, различие между «выражением» и «оператором» в основном аналогично различиям в большинстве императивных языков. Python, JavaScript, C, C , Java, C #, Go, Swift, Rust — основные идеи все те же.
Ответ №1:
Полный синтаксис Lua имеет формальную спецификацию. stat
операторы is и exp
выражения is. В любом случае, вот краткое изложение конкретных битов, о которых вы спрашивали:
что на самом деле представляют собой выражения и операторы в Lua?
По сути, выражения — это все, что преобразуется в значение, а операторы — это вещи, которые выполняются и могут быть разделены точкой с запятой, и обычно каждое из них находится в отдельной строке.
часто это не так понятно из-за таких вещей, как выражение vararg ‘…’ и что nil / true / false также являются выражениями.
Вы правы насчет того, что все это — выражения. Однако это не делает ничего неясного.
и являются ли обращения к таблице выражениями?
ДА. Они покрываются var ::= Name | prefixexp ‘[’ exp ‘]’ | prefixexp ‘.’ Name
, который является частью exp
via prefixexp
.