Являются ли `return nil` и` return` взаимозаменяемыми? - PullRequest
0 голосов
/ 08 июля 2019

Я не совсем понимаю, могу ли я использовать return и return nil взаимозаменяемо?Являются ли return и return nil похожим типом возврата?

Вот два экземпляра кода.

1-й экземпляр:

func naming(name: Int) -> String? {
    switch name {
        case 0: return "Neo"
        case 1: return "Matrix"
        default: return nil
    }
}
naming(name: 2)   // nil

2-й экземпляр:

guard let video = try? avplayer else {
    print("Unable to load a movie")
    return
}

Ответы [ 3 ]

3 голосов
/ 08 июля 2019

Нет, оба не одинаковы!

return без аргументов возвращает Void. Эта форма оператора return может использоваться только с функцией, которая возвращает Void.

После выполнения оператора return функция завершается, и код в вашей функции больше не выполняется.

2 голосов
/ 08 июля 2019

Привет, Курт, очевидно, что ты новичок в программировании и особенно Свифт

простой ответ на ваш вопрос НЕТ

в вашем примере

func naming(name: Int) -> String? /* reference */ {
    switch name {
        case 0: return "Neo"
        case 1: return "Matrix"
        default: return nil
    }
}

/ * ссылка * / вы должны вернуть необязательную строку здесь, это может быть строковое значение или ноль если вы решили вернуть только без значения, вы получите ошибку компиляции

  • во втором примере я хотел бы, чтобы вы представили, что это пустая функция, чтобы понять ее более четко
func naming(name: Int) {
    switch name {
        case 0: return "Neo" /* reference */
        case 1: return "Matrix" /* reference */
        default: return nil /* reference */
    }
}

вы должны получить ошибку компиляции в / * reference * /, если вы пытались вернуть какое-либо значение из этой функции, и вы можете вернуться в любое время без какого-либо значения в зависимости от вашего бизнеса

  • , так что рассмотрим защитное значение let - это пустая функция, поскольку Safety Swift проверяет значение для вас, если оно имеет значение, оно сделает значение / * video * / доступным в следующих строках, иначе оно вернется из функции и будет не выполнять остальную часть кода функции
2 голосов
/ 08 июля 2019

Нет, они не одинаковы.

Возвращение 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...