2016-09-12 2 views
0

a ? x : y 또는 question ? answer1 : answer2과 같이 if {} else {} 문에 대해 삼항 조건부 연산자를 사용할 수 있습니다.nil/not null에 대한 삼항 조건부 연산자

대신 atrue 또는 false, a == nil 또는 a != nil 여부에 있는지 확인하기 위해이 형식을 사용할 수 있습니까?


UPDATE :이 틀림없이 내 인생의 가장 큰 뇌 방귀이었다.

+1

a == nil 및 a! = nil이 true 또는 false가되도록합니다. 다음과 같이 보일 것입니다 : a == nil? x : y – ohr

+0

'a?'는'a == true? '의 약식이므로 equatable에 맞는 것을 검사 할 수 있습니다. 놀이터를 사용해 본 적이 있습니까? ;-) – vadian

+0

저는 파이썬 개발자가 아니지만 대화 형 방식으로 터미널/명령을 사용하여 이런 종류의 것들을 테스트하는 방법이 있다고 가정합니다. 아니면 그냥 사용할 수 있습니다 : https://www.python.org/shell/ –

답변

5

이 작업을 수행 할 수 있습니다

(a == nil) ? x : y 

. (괄호가 필요하지 않지만 코드를 명확하게 할 수있다) 당신이 원하는 경우에 당신은이 작업을 수행 할 수

더 혼란 뭔가 :

a.map { _ in x } ?? y 
+0

이것은 내가 찾고있는 것입니다. 고마워. – chicobermuda

1
a != nil ? a! : b 

위의 코드는 3 가지 조건부 operato r 및 unwrapping (a!)을 사용하여 a가 nil이 아닐 때 wrapped 된 값에 액세스하고, 그렇지 않으면 b를 반환합니다. nil coalescing 연산자는이 조건부 검사 및 언 래핑을 간결하고 읽기 쉬운 형식으로 캡슐화하는보다 우아한 방법을 제공합니다.

예 :

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" 

참조 : Apple documentation

+0

@Hamish : 예, 문자열이 0인지 아닌지를 확인했습니다. – Lion

0

당신만큼 당신의 문은 부울 값을 반환으로 삼항 연산자를 사용할 수 있습니다. 여기서 a == nil 또는! = nil은 부울 값을 반환하므로 '예'로 사용할 수 있습니다.