Нет, они не одинаковы.
Возвращение nil
используется, когда вам нужно вернуть значение, но это значение может быть необязательным. Итак, в вашем примере:
func naming(name: Int) -> String? {
switch name {
case 0: return "Neo"
case 1: return "Matrix"
default: return nil
}
}
Функция ожидает возврата значения String
ИЛИ nil
, следовательно, String?
. Знак вопроса в конце указывает, что String
является необязательным. Когда вы звоните naming(name: 2)
, это вызывает оператор switch
и не находит значения, соответствующего числу 2, поэтому по умолчанию возвращается nil
.
Установка return
, как во втором примере, просто останавливает выполнение остальной функции. Итак:
function loadVideo() {
guard let video = try? avplayer else {
print("Unable to load a movie")
return
}
print("hello")
}
Если переменная avplayer
равна nil, оператор guard
выполнит свой оператор else
и выведет Unable to load a movie
, а затем return
из функции. Это предотвратит печать hello
.