Функция Swift возвращает неиспользуемый необязательный

#function #swift #optional #any

#функция #swift #тип опции #Любой

Вопрос:

У меня есть функция ниже, которая возвращает Any? здесь, я упрощаю код, чтобы прояснить проблему.

 func myFoo(index:CInt, type:CInt, stmt:COpaquePointer) -> Any? { return nil }
  

В приведенном ниже примере кода предполагается, что значение должно быть nil таким, которого не происходит, когда выполняется блок кода внутри if-оператора.

 let value : Any? = self.myFoo(index, type: type, stmt: stmt)

if value
{
   // below is entered!!
}
  

отладчик отображает значения как

протокол значений<>? Какой-то какой-то быстрый._Nil nil

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

1. в чем ваш вопрос здесь? ваш код работает хорошо, он возвращается nil . отладчик показывает правильное nil значение… где именно вы застряли?

2. условие if не работает, вводится блок if, т.е. Условие if приводит к true, а значение равно нулю

3. то, что вы говорите, никогда не происходит. если value is nil , оператор if никогда не будет запускаться в true-branch. возможно, вам потребуется уточнить ваш вопрос и проблему более точно.

4. это именно то, что происходит. попробуйте и посмотрите. если вы измените тип возвращаемой функции на любой тип, отличный от Any? условие if будет работать правильно, проблема возникает только тогда, когда функция возвращает Any?

5. это показывает проблему более упрощенным способом. я удалил функцию и попробовал ее напрямую, и проблема возникает: пусть значение: любое? = nil, если значение { // этот блок кода просто не вводится! ну, это так !! }