Эта страница описывает Топаз v5.17. Прежде чем считать её актуальной, сверьте поле version в /version.json со значением 5.17.
Результат: вы свяжете наблюдаемые значения с проверяемыми типами и дадите повторяющемуся вычислению имя функции.
Что нужно знать: завершите Первую программу и научитесь выполнять topaz check перед topaz run.
Расширьте рабочий файл
Создайте values-functions.tpz:
function осталосьМинут(всего: int, потрачено: int) -> int {
всего - потрачено
}
let тема = "Topaz basics"
let всего: int = 45
let потрачено = 20
let mut занятия = 0
занятия = занятия + 1
print("{тема}: {осталосьМинут(всего, потрачено)} minutes left")
print("sessions: {занятия}")Проверьте и запустите продолжение:
topaz check values-functions.tpz
topaz run values-functions.tpz
Наблюдаемый результат:
Topaz basics: 25 minutes left
sessions: 1Читайте от результата к исходнику
Первая строка содержит результат осталосьМинут(45, 20). Сигнатура называет два параметра int и обещает результат int. Последнее выражение всего - потрачено становится этим результатом без явного return. Используйте return, когда важно показать досрочный выход; объявленный тип результата всё равно действует для каждого выхода.
Для тема и потрачено аннотации не нужны: тип очевиден из начального значения. Запись всего: int делает границу явной. Все три имени неизменяемы — их значения можно читать, но нельзя заменить.
занятия устроено иначе. let mut сообщает о намеренном присваивании, а следующая строка меняет значение с 0 на 1. Изменяемость следует давать той привязке, которая действительно отслеживает состояние, а не всем значениям на случай будущих изменений.
Выбор: вывод, аннотация или изменяемость?
Для локального значения с очевидным типом предпочитайте обычный let и вывод типа. Добавляйте аннотацию, когда читателю важна граница. Добавляйте mut, только если последующее присваивание входит в модель. Сигнатуру функции указывайте явно, потому что вызывающий код полагается на контракт параметров и результата.
Попробуйте
Замените всего на 60, а потрачено на 15, не меняя занятия. Как изменится вывод?
Показать ответ
Первая строка станет Topaz basics: 45 minutes left, а вторая останется sessions: 1. Функция получает новые аргументы, но отдельный изменяемый счётчик по-прежнему увеличивается один раз.
Готовы двигаться дальше, если
Вы можете объяснить выведенный тип, явную аннотацию, неизменяемую и изменяемую привязки, два параметра и выражение, которое становится результатом функции.
Точные формы описаны в разделах Типы и Функции и обобщения. Обобщения — последующий справочный материал, а не условие занятия. Переходите к Данным и управлению.