Ноль / ноль на быстром языке

Как бы мы определили следующее в быстром языке программирования:

  • ноль
  • ноль
  • ноль
  • [NSNull null]

Другими словами, что было бы быстрым эквивалентом каждого из этих объективных терминов. Кроме того, также хотелось бы знать, существуют ли какие-либо конкретные варианты использования для нецелевых типов c, таких как структуры и перечисления. Заранее спасибо.

7 ответов

Решение

Относительно эквивалентов:

  • NULL не имеет эквивалента в Swift.
  • nil также называется nil в Свифте
  • Nil не имеет эквивалента в Swift
  • [NSNull null] можно получить доступ в Swift как NSNull()

Примечание: это мои догадки, основанные на чтении и игре. Исправления приветствуются.

Но обработка nil/NULL в Swift очень отличается от Objective C. Она выглядит так, чтобы обеспечить безопасность и заботу. Читайте об опциях в руководстве. Вообще говоря, переменная вообще не может быть NULL, и когда вам нужно представить "отсутствие значения", вы делаете это декларативно.

Если вам нужно использовать NULL при операциях с указателями низкого уровня, используйте следующее:

UnsafePointer<Int8>.null()

nil означает "не имеет значения", но полностью отличается во всех других смыслах от Objective-C nil,

Это присваивается только необязательным переменным. Он работает как с литералами, так и со структурами (т. Е. Он работает со стековыми элементами, а не только с кучей).

Необязательные переменные не могут быть назначены nil даже если они классы (то есть они живут в куче).

Так что это явно не NULL указатель и не похож на один. Он разделяет имя, потому что он предназначен для использования по той же семантической причине.

Свифта nil это не то же самое, что nil в Objective-C.
В Objective-C, nil указатель на несуществующий объект В Свифте nil это не указатель - это отсутствие значения определенного типа. Дополнительные опции любого типа могут быть установлены на nil, а не только типы объектов.

NULL не имеет эквивалента в Swift.

nil также называется ноль в Swift

Nil не имеет эквивалента в Swift

[NSNull null] можно получить доступ в Swift как NSNull()

Концепция Null в Swift возвращается к необязательному перечислению. Перечисление определяется так

enum Optional<T> {
  case Some(T)
  case None
}

Это означает, что вы не можете иметь неинициализированную переменную / константу в Swift. Если вы попытаетесь это сделать, вы получите ошибку компилятора, говорящую о том, что переменная / константа не может быть неинициализирована. Вы должны будете обернуть это в Дополнительное перечисление.

Это единственная концепция Null, которую вы найдете в Swift

if !(myDATA is NSNull) {
// optional is NOT NULL, neither NIL nor NSNull
} else {
// null
}

У меня была эта проблема в проблемном сценарии: комплект настроек

Чтобы кто-то не тратил свое время (как я его потерял!)

    let userDefaults = UserDefaults.standard

    var settingsValue = userDefaults.string(forKey: "user_preference")

    if settingsValue == nil {
        settingsValue = "1"
    }

    if (settingsValue?.isEqual("1"))! {
        //Do something

    } else {
        //Do something
    }

Пока пользователь не откроет настройки приложения в первый раз, система вернет ноль. И в моем случае приложение вылетает.

Другие вопросы по тегам