Изучение Топаза

Значения и функции

Вычислите оставшееся время функцией, выберите аннотации типов и обновите счётчик.

Вычислите оставшееся время занятий, затем измените входные значения и предскажите вывод. На том же примере разберитесь, когда указывать тип явно и когда добавлять mut.

Установите Топаз и пройдите раздел Первая программа, прежде чем начать это занятие.

Вычислите оставшееся время

Сохраните код в файле values-functions.tpz в своей рабочей папке.

TOPAZ
function осталосьМинут(всего: int, потрачено: int) -> int {
    всего - потрачено
}

let тема = "Topaz basics"
let всего: int = 45
let потрачено = 20
let mut занятия = 0
занятия = занятия + 1

print("{тема}: {осталосьМинут(всего, потрачено)} minutes left")
print("sessions: {занятия}")

В той же папке проверьте и запустите файл.

BASH
topaz check values-functions.tpz
topaz run values-functions.tpz

Проверка завершается с кодом 0. Программа выводит две строки.

Вывод
Topaz basics: 25 minutes left
sessions: 1

Проследите вычисление

Вызов осталосьМинут(45, 20) возвращает 25, которое появляется в первой строке вывода. Функция получает два числа через параметры всего и потрачено.

Запись : int у каждого параметра означает, что он принимает целое число. Запись -> int задаёт целочисленный результат функции. Последнее выражение всего - потрачено даёт этот результат. Для досрочного выхода из функции используйте return. Проверка типов сопоставляет возвращаемые значения с объявленным типом результата.

Выберите типы и разрешите присваивание

Вывод типов позволяет Топазу определить тип по начальному значению. Здесь тема имеет тип string, а потрачено имеет тип int. Запись всего: int указывает тип явно, хотя его можно определить и по числу 45.

Привязка даёт значению имя. Имя, объявленное через let, можно использовать, но присвоить ему другое значение нельзя. Для повторного присваивания нужен let mut. Счётчик занятия начинается с 0 и становится равным 1, когда следующая строка прибавляет единицу.

Что нужноЧто написать
Локальное значение с понятным начальным типомlet потрачено = 20
Явный тип для читателя объявленияlet всего: int = 45
Счётчик с повторным присваиваниемlet mut занятия = 0
Имена и типы параметров, тип результата(всего: int, потрачено: int) -> int

При ошибке типов сравните значение с типом рядом с именем. Передавайте в осталосьМинут целое число 20, а не строку "20".

Попробуйте

Измените начальные значения всего и потрачено на 60 и 15. Оставьте код счётчика прежним. Предскажите обе строки вывода, затем снова проверьте и запустите файл.

Показать ответ

Первая строка станет Topaz basics: 45 minutes left, поскольку 60 - 15 равно 45. Вторая останется sessions: 1, поскольку счётчик по-прежнему увеличивается один раз.

Переходите к следующему занятию

Можно продолжать, когда вы умеете менять входные значения и находить вычитание и обновление счётчика, которые объясняют вывод.

Перейдите к разделу Данные и управление, чтобы хранить несколько учебных задач. Подробный синтаксис описан в разделах Типы и Функции и обобщения. К обобщениям можно вернуться, когда они понадобятся в следующих примерах.