Глава 10 • Система типов
Система типов в SomonScript
Система типов (type system) помогает находить ошибки ещё до запуска программы и писать более надёжный код.
1. Типы-объединения (union types)
Иногда переменная может иметь несколько типов, например быть либо числом, либо строкой. Для этого используются типы-объединения.
Тип-объединение для результата
Переменная, которая может хранить либо число, либо строку.
example.som
навъ НатиҷаЁХато = рақам | сатр;
функсия ҳисоб(а: рақам, б: рақам): НатиҷаЁХато {
агар (б === 0) {
бозгашт "Хато: тақсим ба сифр";
}
бозгашт а / б;
}
тағ натиҷа: НатиҷаЁХато = ҳисоб(10, 2);
чоп.сабт("Натиҷа: " + натиҷа);terminal
somon run types-union.som
Натиҷа: 52. Составные типы для объектов
Тип объекта можно описать отдельно, чтобы им пользовались сразу несколько переменных и функций.
Тип объекта для студента
Использование типа для описания структуры объекта.
example.som
навъ Донишҷӯ = {
ном: сатр;
синну_сол: рақам;
фаъол_аст: мантиқӣ;
};
функсия нишон_додани_донишҷӯ(д: Донишҷӯ): беджавоб {
чоп.сабт("Донишҷӯ: " + д.ном + ", синну сол: " + д.синну_сол);
}
тағ ахмад: Донишҷӯ = {
ном: "Аҳмад",
синну_сол: 20,
фаъол_аст: дуруст,
};
нишон_додани_донишҷӯ(ахмад);terminal
somon run types-student-type.som
Донишҷӯ: Аҳмад, синну сол: 203. Упражнения
Эти упражнения помогут закрепить тему системы типов.
- Создайте тип, при котором результат может быть либо числом, либо сообщением об ошибке, и напишите функцию, которая использует этот тип.
- Создайте тип Китоб со свойствами для названия, автора и числа страниц и опишите с его помощью список книг.
- Создайте тип для результата сетевого запроса (успех + данные или ошибка) и напишите пример функции.