Факультативы и опциональная привязка с самого начала.

Введение

Необязательные опции — одна из самых захватывающих и изящных функций языка программирования Swift. Поначалу это может показаться пугающим, но вместо этого это простая и убедительная тема, как только вы ее поймете. Цель этого руководства — узнать, что такое опции? а также ! и какие проблемы с использованием опций и как неправильно развернуть опции, а затем как их безопасно использовать.

Что это такое и почему я использую опционы

Факультативы — это не что иное, как что-то, чтобы иметь дело с небытием данных. Идея использования опций заключается в том, чтобы иметь дело с ситуацией, когда данные могут быть нулевыми или отсутствовать.

Давайте посмотрим на следующий пример

import Foundation

var name:String = "Vinayak"
var middleName: String = ""
var lastName:String = "S."

Теперь, в приведенной выше ситуации, у меня есть имя, фамилия, однако проблема в том, что у меня нет второго имени, поэтому, что должно произойти в такой ситуации. Как вы могли догадаться, нам нужно что-то, чтобы мы могли установить для этого свойства значение nil или ничего, потому что у нас нет никакой информации об этом. В такой ситуации мы используем опции.

Итак, давайте улучшим код и воспользуемся необязательными параметрами.

import Foundation

var name:String = "Vinayak"
var middleName: String?
var lastName:String = "S."

Итак, теперь мы ввели это «?» в конце объявления, значит ли это, что вы могли бы подумать 🤔. Таким образом, ответ заключается в том, что это необязательное значение, которое означает, что значение для этого может быть или не быть доступным.

Теперь давайте посмотрим на кое-что интересное

import Foundation

var name:String = "Vinayak"
var middleName: String?
var lastName:String = "S."

name = "Harsh"
middleName = "Kumar"
lastName = "P."

print("The first name is", name)
print("Middle Name is ", middleName)
print("The last name is ", lastName)

Теперь в приведенном выше примере я изменил имя, отчество и фамилию на другие значения, поскольку это переменная и изменяемая, если вы не уверены в этом, я бы порекомендовал вам прочитать мой другой пост о переменных и константах в swift кликните сюда. Теперь, когда я пытаюсь напечатать это, мы получаем предупреждение.

Скриншот 2018-12-11 в 23.09.06.png

🤷‍♀️Что это за предупреждение? Вы могли подумать?

Причина этого предупреждения в том, что мы пытаемся напечатать что-то, что может или может нет иметь в этом какое-то значение. Если мы печатаем необязательный параметр, который не имеет никакого значения, программа рухнет. Итак, прежде чем перейти к решениям этой проблемы, давайте посмотрим, какие исправления дает мне Xcode.

Второе исправление с предупреждением: ! (Принудительное разворачивание)

Разрушение.png

Это решение исправляет предупреждение и теперь! Означает, что я уверен, что для этих необязательных переменных всегда есть значение, и если оно равно нулю, приложение будет аварийно завершено. Не рекомендуется! если вы не уверены на 100%, что необязательная переменная имеет значение и не может быть равна нулю. Теперь, если мы хотим использовать необязательное значение, нам нужно его извлечь, и это называется разверткой, и в этом случае мы заставляем его дать мне значение. Вот почему мы называем это Force Unwrapping.

Как мы можем безопасно развернуть опции.

**if let заявления **

import Foundation

var name:String = "Vinayak"
var middleName: String?
var lastName:String = "S."

name = "Harsh"
middleName = "Kumar"
lastName = "P."

print("The first name is", name)


if let middleN = middleName{
    print("The middle Name is ", middleN)
}else{
    print("There is no Middle Name")
}

print("The last name is ", lastName)


поэтому вышеприведенное утверждение — это то, что мы называем опциональной привязкой или безопасной разверткой. Условие if let выше проверяет, есть ли значение в middleName, затем присваивает переменной MiddleN и печатает middleN. Но если значения нет, он переходит к другому блоку и печатает, что среднего имени нет.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *