Junior
Чӣ гуна истифода бурдани партофтани маҷбурӣ дар Swift?
sobes.tech AI
Ҷавоб аз AI
Форсонидани бароварӣ (!) барои дастрасӣ ба арзиши интихобшуда истифода мешавад, вақте ки мо боварӣ дорем, ки он nil нест.
var optionalString: String? = "Салом"
let forcedString = optionalString! // Форсонидани бароварӣ
Маслиҳатҳо барои истифода:
- Вақте ки интихобшуда оғоз ёфта ва кафолат дода мешавад, ки арзиш дорад.
- Вақте ки боварӣ ба мавҷудияти арзиш асос ёфтааст ба логикаи барнома ё маълумоти беруна.
Рискҳо:
- Агар интихобшуда
nilбошад, кӯшиши форсонидани бароварӣ ба барнома хатогии фоҷиабор (хато дар вақти иҷро) меорад.
Альтернативҳо (бехатартар):
-
Бандии интихобшуда (
if let,guard let) : Бехатартар арзишро мебарорад агар он вуҷуд дошта бошад.if let safeString = optionalString { // Истифодаи safeString } else { // optionalString `nil` }guard let safeString = optionalString else { // optionalString `nil`, аз ҳудуд хориҷ шудан return } // Истифодаи safeString -
Занҷирҳои интихобшуда (
?) : Вақте ки интихобшудаnilнест, амалро иҷро мекунад.let uppercaseString = optionalString?.uppercased() // uppercaseString хоҳад буд String? -
Оператори муттаҳидсозии бо nil (
??) : Арзиши пешфарзро медиҳад агар интихобшудаnilбошад.let result = optionalString ?? "Арзиши пешфарз"
Форсонидани бароварӣ бояд бо эҳтиёт истифода шавад ва танҳо вақте ки ба таври қатъӣ боварӣ дорем, ки арзиш мавҷуд аст. Дар аксар ҳолатҳо, истифодаи усулҳои бехатартар барои кор бо интихобшудаҳо беҳтар аст.