Programing

삼항 조건 연산자에서 선택 변수를 어떻게 사용합니까?

crosscheck 2021. 1. 5. 08:30
반응형

삼항 조건 연산자에서 선택 변수를 어떻게 사용합니까?


삼항 조건 연산자와 함께 Optional 변수를 사용하고 싶지만이 오류가 발생합니다. optional은 부울로 사용할 수 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

var str1: String?
var myBool:Bool
myBool = str1 ? true : false

bool에 문자열 값을 지정할 수는 없지만 str1이 nil인지 다음과 같이 확인할 수 있습니다.

myBool = str1 != nil ? true : false
print(myBool)

str1이 비어 있기 때문에 false를 인쇄합니다.


Nil Coalescing Operator도 사용할 수 있습니다. 아래 코드는 삼항 조건 연산자를 사용하고 a가 nil이 아닌 경우 a 내부에 래핑 된 값에 액세스하고 그렇지 않으면 b를 반환하기 위해 강제 풀기 (a!)를 사용합니다.

일반 삼항 연산자 :

output = a != nil ? a! : b Apple 개발자 링크 : 데모 링크를 참조하십시오.

Swift 1.2 & 2에서는 위의 코드 줄이 더 짧은 형식으로 대체됩니다.

output = a ?? b

데모 링크 : nil 통합 연산자 (a ?? b)는 값이 포함 된 경우 선택적 a를 풀거나 a가 nil 인 경우 기본값 b를 반환합니다.


원하는 값이 옵션 (Swift 3.0에서)에 대한 함수 호출의 속성 또는 결과 인 경우에도 잘 작동합니다.

return peripheral?.connected ?? false

삼항 연산자 는 세 가지 대상에서 작동합니다. C와 마찬가지로 Swift에는 삼항 연산자 인 삼항 조건 연산자 (a? b : c) 만 있습니다.

사용 예 tableView-

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
     return section == 2 ?  4 :  1
}

섹션이 2이면 4를 반환하고 그렇지 않으면 1을 반환합니다.


비교가 어떤 조건에 근거한 경우

 let sliderValue = Float(self.preferenceData.getLocationRadius().characters.count > 1 ?self.preferenceData.getLocationRadius():"0.1")

여기서 getLocationRadius () 함수는 문자열을 반환합니다. 1과? 사이에 공백을 두지 않으면 한 가지 더 구문 오류가 발생합니다.

참조 URL : https://stackoverflow.com/questions/26881838/how-do-you-use-the-optional-variable-in-a-ternary-conditional-operator

반응형