Sobes.tech
Junior

Co to jest wrapped?

sobes.tech AI

Odpowiedź od AI

wrapped - to wartość typu opcjonalnego po pomyślnym wyodrębnieniu (unwrapping) jego zawartości. Opcjonalny Optional<<Wrapped>> przechowuje albo wartość typu Wrapped, albo nil. Wyodrębnienie pozwala uzyskać dostęp do wartości Wrapped, jeśli istnieje.

Przykłady wyodrębniania:

  1. Wymuszone wyodrębnianie (Force unwrapping) !:

    var optionalString: String? = "Hello"
    let unwrappedString = optionalString! // Uzyskuje wartość "Hello"
    // Jeśli optionalString == nil, wystąpi błąd
    
  2. Przyłączanie opcjonalne (Optional binding) if let lub guard let:

    var anotherOptionalString: String? = "World"
    if let guaranteedString = anotherOptionalString {
        // Wewnątrz tego bloku, guaranteedString jest typu String (odpakowany)
        print(guaranteedString)
    }
    
  3. Łańcuch opcjonalny (Optional chaining) ?:

    class MyClass { var property: String? }
    var instance: MyClass? = MyClass()
    instance?.property = "Value" // Jeśli instance nie jest nil, właściwość jest ustawiana
    let retrievedValue = instance?.property // retrievedValue będzie typu String?
    
  4. Operator koalescencji null (Nil-coalescing operator) ??:

    var yetAnotherOptionalString: String? = nil
    let defaultValue = yetAnotherOptionalString ?? "Default" // defaultValue będzie "Default" (String)
    // Jeśli yetAnotherOptionalString miałoby wartość, użyto by jej jako odpakowanej.
    

W kontekście Swift, wartość wrapped to bezpośrednio to, co znajdowało się "wewnątrz" opcjonalnego przed jego obsługą.