swift - неявные развернутые опции - PullRequest
0 голосов
/ 25 октября 2018

Рассмотрим следующее утверждение

var aString: String! = "this is a test string"

Теперь, как мы видим, aString всегда должно содержать значение "" или некоторый текст.Тогда какой смысл делать это неявным развернутым необязательным.Почему это не может быть простая строка вроде:

var aString: String = "this is a test string"

Также я хотел бы понять цель неявного развертывания необязательных необязательных опций , отличных от случая IBOutlets.

Другими словами, в чем преимущество создания неявного необязательного var необязательного, когда мы знаем, что оно всегда имеет не ноль значение, почему бы нам не объявить его как нормальное var.

1 Ответ

0 голосов
/ 25 октября 2018

Все это связано с инициализацией класса.

возьмите Outlets, например, они принудительно развернуты, потому что мы знаем, что они будут содержать значение после инициализации из XIB или раскадровки, но они не будут установлены до классаинициализация.

Принудительно распаковываемые необязательные выходы, чтобы сообщить компилятору, что я беру на себя ответственность убедиться, что эта переменная будет установлена ​​перед вызовом.

в вашем примереЯ не думаю, что имеет смысл написать:

let aString: String! = "this is a test string"

Это должно быть так, как вы написали:

let aString: String = "this is a test string"

Имеет смысл иметь:

var aString: String!

означает, что вы станете владельцем этой переменной инициализации (т.е. убедитесь, что она не равна нулю)

...