Боби 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. Машқҳо
Ин машқҳо мавзӯи системаи намудҳоро мустаҳкам мекунанд. Барои ҷавобҳои муфассал ба боби 10 нигаред.
- Намуде эҷод кунед, ки натиҷа метавонад ё рақам ё паёми хатогӣ бошад ва функсияе нависед, ки ин намудро истифода мебарад.
- Намуди Китоб созед бо хосиятҳои ном, муаллиф ва саҳифаҳо ва рӯйхати китобҳоро бо ин намуд муайян кунед.
- Намуд барои натиҷаи дархости шабакавӣ (муваффақ + маълумот ё хато) созед ва функсияи намунавӣ нависед.
