program story

신속한 언어에서 null / nil

inputbox 2020. 11. 10. 08:05
반응형

신속한 언어에서 null / nil


신속한 프로그래밍 언어로 다음을 어떻게 정의합니까?

  • 없는
  • [NSNull null]

즉, 이러한 각 객관적인 c 용어와 신속하게 상응하는 것은 무엇일까요? 또한 구조체 및 열거 형과 같은 비 객관적인 c 유형에 대한 특정 사용 사례가 있는지 여부를 알고 싶습니다. 미리 감사드립니다.


등가물에 관하여 :

  • NULL Swift에는 상응하는 것이 없습니다.
  • nilnilSwift 에서도 호출 됩니다.
  • Nil Swift에는 상응하는 것이 없습니다.
  • [NSNull null] Swift에서 NSNull ()로 액세스 할 수 있습니다.

참고 : 이것은 읽기와 놀이를 기반으로 한 내 추측입니다. 수정을 환영합니다.

그러나 Swift의 nil / NULL 처리는 Objective C와 매우 다릅니다. 안전과 관리를 강화하도록 설계되었습니다. 설명서의 선택 사항을 읽으십시오 . 일반적으로 변수는 NULL이 될 수 없으며 "값이 없음"을 나타내야 할 때 선언적으로 수행합니다.


낮은 수준의 포인터 작업에서 NULL을 사용해야하는 경우 다음을 사용하십시오.

UnsafePointer<Int8>.null()

nil"가치 없음"을 의미하지만 Objective-C와는 다른 모든 의미에서 완전히 구별됩니다 nil.

선택적 변수에만 할당 할 수 있습니다. 리터럴과 구조체 모두에서 작동합니다 (예 : 힙 기반 항목뿐만 아니라 스택 기반 항목에서도 작동합니다).

옵션이 아닌 변수 nil는 클래스 인 경우에도 할당 할 수 없습니다 (예 : 힙에 있음).

따라서 그것은 명시 적으로 NULL포인터가 아니며 하나와 유사하지도 않습니다. 동일한 의미 론적 이유로 사용하기위한 것이므로 이름을 공유합니다.


Swift 는 Objective-C nil와 동일하지 않습니다 nil.
Objective-C에서 nil존재하지 않는 개체에 대한 포인터입니다. Swift에서는 nil포인터가 아니라 특정 유형의 값이없는 것입니다. nil객체 유형뿐만 아니라 모든 유형의 옵션을로 설정할 수 있습니다 .

NULL Swift에는 상응하는 것이 없습니다.

nil Swift에서는 nil이라고도합니다.

Nil Swift에는 상응하는 것이 없습니다.

[NSNull null] Swift에서 다음과 같이 액세스 할 수 있습니다. NSNull()


Swift의 Null 개념은 Optional enum으로 다시 시작됩니다. 열거 형은 다음과 같이 정의됩니다.

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

이것이 의미하는 바는 Swift에서 초기화되지 않은 변수 / 상수를 가질 수 없다는 것입니다. 이렇게하려고하면 변수 / 상수를 초기화 할 수 없다는 컴파일러 오류가 발생합니다. Optional enum으로 래핑해야합니다.

이것은 Swift에서 찾을 수있는 유일한 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
    }

사용자가 처음으로 앱 설정을 열 때까지 시스템은 nil을 반환합니다. 그리고 제 경우에는 앱 이 충돌 합니다.


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

참고 URL : https://stackoverflow.com/questions/24043589/null-nil-in-swift-language

반응형