Sobes.tech
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 ?? "Арзиши пешфарз"
    

Форсонидани бароварӣ бояд бо эҳтиёт истифода шавад ва танҳо вақте ки ба таври қатъӣ боварӣ дорем, ки арзиш мавҷуд аст. Дар аксар ҳолатҳо, истифодаи усулҳои бехатартар барои кор бо интихобшудаҳо беҳтар аст.