두 개의 물음표가 사용 된 Swift 구문이 나타났습니다 ("??"). 예를 들어 "??"의 의미는 무엇입니까? 신속하게?
,let val = something["something"] as? String ?? nil
는
가 정확히 무엇을 의미합니까 ? 이 구문에 대한 몇 가지 유스 케이스는 무엇입니까?
두 개의 물음표가 사용 된 Swift 구문이 나타났습니다 ("??"). 예를 들어 "??"의 의미는 무엇입니까? 신속하게?
,let val = something["something"] as? String ?? nil
는
가 정확히 무엇을 의미합니까 ? 이 구문에 대한 몇 가지 유스 케이스는 무엇입니까?
무기 호 - 합체 운영자는
그것은이 짧은 형태의 종류입니다.
let val = (something["something"] as? String) != nil ? (something["something"] as! String) : "default value"
무풍 병합 연산자 (A ?? 나)는 값이 포함 된 경우 옵션을 펼쳤다 또는를 반환 (something["something"]
이 nil
또는 선택 사양 인 경우 기본값 nil
또는 다른 값을 할당 할 수 있습니다 의미) a가 nil 인 경우 기본값 b입니다. 표현식 a는 항상 선택적 유형입니다. 표현식 b는 a에 저장된 유형과 일치해야합니다. !
A = 무 :
-NIL로 병합 연산자는 다음 코드 속기? 에이! : b 위의 코드는 삼항 조건 연산자와 강제적 인 언 래핑 (a!)을 사용하여 a가 nil이 아닐 때 wrapped 된 값에 액세스하고, 그렇지 않으면 b를 반환합니다. nil-coalescing 연산자는이 조건부 검사와 언 래핑을 간결하고 읽기 쉬운 형식으로 캡슐화하는보다 우아한 방법을 제공합니다.
a의 값이 nil이 아닌 경우 b 값은 평가되지 않습니다. 이것을 단락 평가라고합니다.
아래의 예는 기본 색 이름과 선택적 사용자 정의 색상 이름 사이에서 선택하는 무풍 병합 연산자를 사용
let defaultColorName = "red"
var userDefinedColorName: String? // defaults to nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName is nil, so colorNameToUse is set to the default of "red"
이 스위프트의 Nil-Coalescing Operator
입니다. 그 은 값을 포함하거나, 무기 호이면 B A 디폴트 값을 반환하면
NIL로 - 유착 연산자 (A? B는) 선택적을 펼쳤다. 표현식 a는 항상 선택적 유형입니다. 식 b는 과 일치해야합니다.
하지만 당신의 예에서 이미 바인딩을 선택하여, 그래서 조건을 실패 할 경우, 옵션으로 ??
를 사용할 필요가 다음 자동 nil
를 할당하지
something["something"]
이
String
를 제공하지 않을 경우 여기
let val = something["something"] as? String ?? nil
,
something["something"] as? String
는 이미
nil
할당합니다. 이 연산자는 여기에 필요 없습니다.
이 연산자는 일반적으로 할당 된 표현식이나 변수가 선택적 결과를 생성 할 때 기본값을 제공하는 데 사용됩니다.예를 들면 다음과 같습니다
let i: Int? = 5
let j: Int? = nil
let value1 = i ?? 9 //value1 will be 5 non-optional
let value2 = j ?? 9 //value2 will be 9 non-optional
당신이 올바른 구문 있지만 제공 한 예는 결과에 아무런 결과가없는 것 ?? nil
를 생략으로, 중복입니다.
네, 그렇기 때문에 그것을 쓰는 데는 아무런 이유가 없습니다 – Pranshu
그것은 nil coalescing operator로 불려지지만, 만약 당신이'nil'을 넘겨 준다면 어떤 의미가 없습니다. –
결과 개체는 선택 사항입니다. 문자열 –
https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html#//apple_ref/doc/uid/TP40014097-CH6-ID72 – jtbandes