Sobes.tech
Middle

Чаро дар сохтор наметавонем майдони бо навъи ҳамин сохтор эълон кунем?

sobes.tech AI

Ҷавоб аз AI

Структурҳои дар Swift навъҳои арзиш (value types) мебошанд. Вақте ки як намунаи структура эҷод мешавад, ёдгории барои ҳамаи майдонҳои он ҷудо карда мешавад. Агар структура метавонад майдони навъи худ дошта бошад, андозаи он беохир хоҳад буд, зеро дар дохили он ҷой барои намунаи дигаре аз ҳамин структура лозим аст, ки ба навбати худ ҷой барои дигаре талаб мекунад, ва ҳамин тавр давом мекунад. Ин ба такрорпазирии доимӣ оварда мерасонад ва имконнопазирии муайян кардани андозаи ниҳоии структураро мехоҳад.

Баръакси структураҳо, синфҳо (classes) навъҳои истинодӣ (reference types) мебошанд. Майдони синф метавонад истинод ба намунаи ҳамин синфро нигоҳ дорад. Азбаски майдон танҳо суроғаи дар ёдгирӣ, ки намунаи синфро ишғол мекунад, нигоҳ медорад, ва на тамоми намуна, зарур нест, ки андозаи пурраи намуна дар вақти муайян кардани андозаи синф маълум бошад. Истинодҳо андозаи доимӣ доранд.

Масалан, ки масъалаи бо структураҳо иллюстриронро нишон медиҳад:

// Ин структура наметавонад компилирова шавад
// struct Node {
//     var value: Int
//     var next: Node? // Хатогӣ! Структура наметавонад майдони 'Node' дошта бошад
// }

Барои ҳалли мушкилоти монанд бо структураҳо, метавон истифода бурд истинодҳои ғайрирасмӣ, масалан, тавассути протоколҳо ё closure-ҳо, ё истифода бурд синфҳоро. Масалан, рӯйхати пайвастшуда, ки одатан бо синфҳо амалӣ карда мешавад.