선택적 변수를 설명하는 기사가 여러 개 있습니다.신속한 선택 값 명확화 사용법
그러나 나는 아직도 이런 종류의 예제로 명확하지 않다.
var metadata: AnyObject?
metadata = .......
metadata?.getValue
metadata!.getValue
메타 데이터? 및 메타 데이터! 모두 런타임 오류없이 작동합니다. 누구나 차이점에 대해 설명해 주시겠습니까?
선택적 변수를 설명하는 기사가 여러 개 있습니다.신속한 선택 값 명확화 사용법
그러나 나는 아직도 이런 종류의 예제로 명확하지 않다.
var metadata: AnyObject?
metadata = .......
metadata?.getValue
metadata!.getValue
메타 데이터? 및 메타 데이터! 모두 런타임 오류없이 작동합니다. 누구나 차이점에 대해 설명해 주시겠습니까?
귀하의 예제에서 메타 데이터가 실제로 0 일 때 그 차이가 명확 해집니다.
이 코드를 사용하면 네 번째 줄이 충돌하지만 세 번째 줄은 충돌하지 않게됩니다. ?
운영자가 선택 사양 체인을 만들 수 있습니다 반면에 당신이 그것에 대해 자세한 내용을 원하는 경우 !
연산자, 변수를 펼쳤다 때문에, 당신은 또 다른 유용한 운전자가 당신의 예에서 ??
입니다 그것을 here
을 할 수있다 당신은 쓸 수있다 : 식의 왼쪽 부분이 전무 경우
는metadata ?? "Another description"
, 그것은 바로 하나를 반환합니다. 특정 상황에서 유용합니다.
는2016년 8월 10일 코멘트 후 편집 : ??
은 운영자을 병합 전무 라고, 그것은 이진 연산자입니다. 첫 x 째 인수는 선택적 유형이어야합니다. 첫 번째 인수가 안전하게 래핑 될 수 있는지 확인하고 성공하면 래핑되지 않은 값을 반환합니다. 첫 번째 값이 nil이면 두 번째 인수가 반환됩니다.
표현은
return x ?? y
if x != nil {
return x!
} else {
return y
}
또는
return x != nil ? x! : y
에 해당의 우리가 두 개의 정수 그러나 때때로을 추가하는 기능을 만들고 싶어한다고 가정 해 봅시다 두 번째는, 그렇지 않으면 두 개의 정수를 추가, y
이 합이 x + 0
입니다 nil
경우 우리가
func add(x: Int, y: Int?) -> Int{
return x + (y ?? 0)
}
를 작성할 수, nil이 될 수 있습니다. 이 기능의 수행 방법을보다 효율적으로 개선 할 수있는 방법이 있습니다. 당신은 Nil Coalescing Operator
고마워요, 로드리고. 더 자세히 설명해 주셔서 감사합니다. ?? 운영자. –
@HarriWestman 제 편집 된 대답을 읽어주세요 –
다시 한번 감사드립니다, 정말 고맙습니다. 당신을위한 최고의 소원 !!! –
http://stackoverflow.com/documentation/swift/247/optionals#t=201608102313446025323 – jtbandes
에 대한 더 많은 읽을 수 있습니다 여기에 그것은 매우 바로 내가 찾고있는 무슨 대답 jtbandes , 감사합니다. –