Пожалуйста, объясните значение»! » в контексте вызова функции

#swift

Вопрос:

Я прочитал код, где было написано » readLine()!». Что означает»! » в конце вызова функции. Я попытался поискать, но ничего не смог найти.

Комментарии:

1. Вы всегда можете получить прямой доступ к результату возвращаемой функции, и, как описано ниже, это делается для принудительного разворачивания возвращаемого необязательного параметра, но вы также можете получить доступ к свойствам или вызвать другие функции возвращаемого типа, например readLine()?.lowercased() , чтобы получить результат в виде необязательной строки в нижнем регистре

Ответ №1:

Как указано в документации readLine() , возвращаемое значение функции равно an Optional String . Поэтому ! сразу после вызова функции просто принудительно разворачивает необязательное возвращаемое значение.

 let optionalInput: String? = readLine()
let forceUnwrappedInput: String = readLine()!
 

Помните , что принудительное разворачивание Optional значения приводит к исключению во время выполнения, если значение было развернуто принудительно nil , поэтому вам следует быть очень осторожным с его использованием и выполнять принудительное разворачивание только в том случае, если вы на 100% уверены, что значение никогда не может быть nil .

Комментарии:

1. Да, это все объясняет. Спасибо!

Ответ №2:

«! «- это самый простой, но самый опасный способ извлечь значение из Optionals . Дополнительные параметры указывают на то, что может быть или не быть значения.

Вы можете извлечь значение, вставив»! «после значения «Дополнительные», но если значения нет, runtime error возникает a.

поэтому вам лучше использовать «Необязательную привязку» для извлечения значений.

 let optionalInput: String? = readLine()
if input = optionalInput {
// When nil is not

   ... 

} else {
// When nil
  ...

}