January 11, 2024

Обновления. Тайпкастинг и константы в Leo

Всем привет! Недавно вышло обновление языка программирования Leo от компании Aleo. В ближашие 2 статьи мы поговорим о них. В данной статье мы говорим про приведение типов (тайпкастинг) и про константы, в следующей я расскажу про массивы и про кортежи.

Обновление

Для начала нужно обновить Leo до самой актуальной версии. Если Leo ещё у вас не установлен, то можете найти статьи у меня на канале по этой теме.

Открываем Git Bash и вводим команду

leo update

Тем самым мы обновим Leo до самой новой версии.

Тайпкастинг. Приведение типов.

Всю актуальную информацию по обновлению языка вы можете получить в докумнтации Aleo в разделе Language https://developer.aleo.org/leo/language.

Здесь же мы и найдем синтаксис приведения типов.

let a: u8 = 2u8; // explicit type
let b: u16 = a as u16; // type casting
let b: u8 = 2; // implicit type — not supported

Давайте протестируем эту функцию. Для этого создадим новый проект, вводим в git следующий текст:

leo new typecast

Теперь нам нужно перейти в эту директорию. Для этого вводим:

cd typesact

Давайте откроем наш проект в Sublime text. Для этого переходим в директорию, где создался наш проект.

И открываем файлы main.leo и typecast.in.

Теперь давайте создадим 2 переменные. Одна будет типа i8 и иметь значение -11, а вторая типа u8 и она будет иметь значение 5. Наша задача сложить две этих переменные.

Просто сложить мы их не можем. Для этого нам нужен тайпкастинг. Мы должны привести переменную h к типу i8. Для этого создадим переменную h2, которая будет иметь тип i8 и примет значение переменной h.

Осталось сложить переменные g и h2 и таким образом наша задача будет выполнена.

Запишем сумму переменных в переменную sum и изменим выходные данные на переменную типа u8.

Теперь запускаем программу, вводим:

leo run main

Как мы видим, все сработало корректно. Теперь давайте перейдем к константам.

Константы

Их описание находится ниже в документации, давайте его прочитаем.

A constant is declared as const {name}: {type} = {expression};.
Constants are immutable and must be assigned a value when declared.
Constants can be declared in the global program scope or in a local function scope.
Константа объявляется как const {name}: {type} = {expression};.
Константы являются неизменяемыми, и при объявлении им должно быть присвоено значение.
Константы могут быть объявлены в глобальной области программы или в области локальной функции.

Давайте переформулируем задачу, которую делали с тайпкастингом. Теперь сложим переменную и константу.

Алгоритм остается тот же, несмотря на то, что это константа и мы не можем ее изменять. По сути, мы создаем переменную, которая имеет такое же значение, как константа, но с другим типом. Запускаем программу и получаем:

Всё работает корректно.

На этом всё! В следующей статье поговорим про массивы и про кортежи.