삼항 조건 연산자에서 선택 변수를 어떻게 사용합니까?
삼항 조건 연산자와 함께 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과? 사이에 공백을 두지 않으면 한 가지 더 구문 오류가 발생합니다.
'Programing' 카테고리의 다른 글
ORA-12560 : TNS : 프로토콜 어댑터 오류 (0) | 2021.01.05 |
---|---|
gvim의 메뉴 / 도구 모음을 숨기는 방법은 무엇입니까? (0) | 2021.01.05 |
angularjs의 다른 컨트롤러에서 함수를 호출하는 방법은 무엇입니까? (0) | 2021.01.05 |
webpack angular2 앱의 node_modules에서 CSS를 가져 오는 방법 (0) | 2021.01.05 |
작성자가 C ++에서 스택 및 힙을 설명하는 데 실수를 했습니까? 아니면 내가 뭔가를 잘못 읽었습니까? (0) | 2021.01.05 |