Выражение — это наименьшая единица кода, выдающая результат при выполнении. В Verse всё является выражением, то есть всё возвращает значение.
Пример: выражение if… else, которое в Verse рассчитывает значение, зависящее от содержимого
блоков выражения. Следующий код рассчитывает значение строки, содержащее «Big!» или «Small!» в зависимости от того, превышает ли MyNumber значение 5:
if (MyNumber > 5):
“Big!”
else
“Small!”Это значит, что вы можете использовать if ... else непосредственно в качестве входных данных функций, вместо того чтобы сохранять результат и использовать его в качестве входных данных.
Несмотря на то, что этот пример простой, в некоторых контекстах эти функции становятся более значительными. Например, циклы вычисляют массивы значений, что позволяет быстро создавать новые массивы на основе существующих.
В следующем коде переменная MyArray будет содержать все значения меньше 5 из массива NumberArray.
MyArray : []int = for(Number := NumberArray, Number < 5):
NumberВыражения с неоднозначным результатом
Выражение с неоднозначным результатом — это выражение, которое может успешно завершиться и вернуть значение или завершиться с ошибкой и не вернуть никакого значения. Выражения с неоднозначным результатом могут выполняться только в контексте, допускающем неоднозначность, потому что этот контекст будет определять, что происходит в случае, если выражение завершается с ошибкой.
Примеры выражений с неоднозначным результатом включают индексирование массива, поскольку при неправильном индексе произойдёт ошибка, и использование операторов, например сравнение двух значений. Более подробную информацию о выражениях с неоднозначным результатом в Verse см. в разделе Неоднозначность.
Список выражений в Verse
В следующей таблице описаны различные виды выражений в Verse. Перейдите по ссылкам, чтобы узнать больше о каждом выражении.
| Выражение | Описание | Это выражение с неоднозначным результатом? |
|---|---|---|
Литералы | Литерал — это фиксированное значение в коде. Например, это может быть число или символ. В Verse существуют литералы следующих типов:
| |
Вызовы функции | Вызов функции является выражением и может иметь две формы: | Только если вызов функции имеет синтаксис |
Сравнение | Выражение сравнения сравнивает два значения с помощью одного из операторов сравнения:
Более подробно см. в разделе Операторы. | Да |
Поручение | Выражение присваивания сохраняет значение в изменяемом месте, например, при инициализации константы или изменении значения переменной. Более подробно см. в разделе Переменные и константы. | |
Математика | Математическое выражение выполняет вычисления с помощью операторов:
У всех этих операторов также есть варианты присваивания, которые можно использовать с указателями. Более подробно см. в разделе Операторы. | Только для целых чисел. |
Принятие решений | В выражении принятия решения используются операторы | Да |
Оператор запроса | В выражении запроса используется оператор | Да |
Создание экземпляров классов и структур | Создание экземпляра | |
контроль исполнения (control flow) | Контроль исполнения определяет порядок, в котором компьютер выполняет инструкции. Для изменения контроля исполнения можно использовать такие выражения, как
Более подробно об этом рассказано в разделе Контроль исполнения. | |
Монохромная клетка | Массив — это контейнер, в котором можно хранить элементы одного типа. Элементы массива располагаются в том порядке, в котором они в нём сохраняются. К элементам можно получить доступ по их позиции в массиве, называемой индексом. Подробнее об этом рассказано в разделе Массив. | Только при индексировании массива. |
кортеж | Кортеж — это контейнер, в котором можно хранить элементы одного или нескольких типов. Элементы кортежа располагаются в том порядке, в котором они в нём сохраняются. К этим элементам можно получить доступ по их позиции в кортеже, называемой индексом. Подробнее об этом рассказано в разделе Кортеж. | |
Карта | Ассоциативный массив — это контейнер, в котором можно хранить значения, связанные с другими значениями, в виде пар «ключ-значение». Переменные в парах «ключ-значение» могут представлять любую комбинацию типов при условии, что ключ имеет тип comparable. Элементы ассоциативного массива располагаются в том порядке, в котором пары «ключ-значение» записываются в ассоциативный массив, и вы можете получить доступ к элементам по их уникальным ключам. Подробнее об этом рассказано в разделе Ассоциативный массив. | |
Настройка | Переменная типа option — это контейнер, который может иметь одно значение типа или не иметь его. Подробнее см. в разделе Тип option. | |
Дальность | Выражения диапазона содержат все числа между двумя указанными значениями (в том числе и сами эти значения) с |