Swift에서 문자열을 비교할 때 옵션이 아닌 문자열을 선택적 문자열과 비교할 수 있습니다.문자열 옵션 비교 대 비 선택적 옵션
과 같이 (텍스트는 선택 사항이며, 그것은 비어) : 항등 연산자는 그 자체로 문자열을 펼쳤다 있기 때문에
UITextField.text == "" // True
인가?
Swift에서 문자열을 비교할 때 옵션이 아닌 문자열을 선택적 문자열과 비교할 수 있습니다.문자열 옵션 비교 대 비 선택적 옵션
과 같이 (텍스트는 선택 사항이며, 그것은 비어) : 항등 연산자는 그 자체로 문자열을 펼쳤다 있기 때문에
UITextField.text == "" // True
인가?
:
let x: String? = nil
if x == "" {
print("True")
} else {
print("False") //Printed
}
무엇 실제로 여기에서 일어나고있는 것은 text
속성이 초기화에 실제로 nil
결코 없다는 것입니다 - 그것은되는 대신 빈 문자열의 documentation에 의해 주어진 :
이 문자열은 기본적으로 @ ""입니다.
Swift 컴파일러는 선택적 옵션을 암시 적으로 언랩하지 않으며 대신 프로그래머에게 그 책임을 맡깁니다.
public func ==<T : Equatable>(lhs: T?, rhs: T?) -> Bool
오른쪽에있는 비 옵션이 자동으로 선택으로 승격됩니다 다음 ==
작업이 또한 선택적 항목에 대해 정의 된 모든 Equatable
유형에 대해
.
두 개의 값이 모두 nil
이거나 둘 다 같지 않고 동등한 경우 선택적 기호 인 경우 ==
은 true
을 반환합니다.
사이드 노트 : 선택적 인수를 취하는 해당 * 비교 연산자는 Swift 3에서 제거됩니다. https://github.com/apple/swift-evolution/blob/master/proposals/0121-remove-optional-comparison-operators. md. –
은 실제 코드입니까? 왜냐하면'UITextField' 클래스에는'text' 속성이 없습니다. – Wain
이것은 단지 예입니다. 나는 UITextField를 초기화했고 text라는 속성을 가지고있다. 여기에서 볼 수 있습니다 : https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextField_Class/ – WYS
언 래핑 (unwrapping)이 없으며, 동등 함은 optionals에 대해서도 정의되어 있습니다. 옵션은 선택적으로 자동 승격 될 수 있습니다. – Sulthan