Swift 선택적 유형
Swift의 Optional 유형, 누락된 값을 처리하는 데 사용됩니다. Optional은 "거기에 값이 있고 x와 같습니다" 또는 "거기에 값이 없습니다"를 의미합니다.
Swfit 언어 정의 접미사? Optional이라는 이름의 유형을 간략하게 표현하면 다음 두 선언이 동일합니다.
var optionalInteger: Int? var optionalInteger: Optional<Int>
두 경우 모두, optionInteger 변수는 선택적 정수 유형입니다. 유형과 ? 그들 사이에는 공간이 없습니다.
Optional은 값이 있을 수도 있고 없을 수도 있음을 나타내는 데 사용되는 None과 Some(T)의 두 가지 사례가 있는 열거형입니다. 모든 유형은 선택적 유형으로 명시적으로 선언(또는 암시적으로 변환)될 수 있습니다. 옵셔널 타입을 선언할 때 반드시 괄호를 사용할까요? 운영자에게 적합한 범위. 예를 들어 선택적 정수 배열을 선언하려면 (Int[])?로 작성해야 하며, Int[]?로 작성하면 오류가 보고됩니다.
초기 값을 제공하지 않고 선택적 변수나 선택적 속성을 선언하면 해당 값의 기본값은 nil이 됩니다.
선택적 옵션은 LogicValue 프로토콜을 따르므로 부울 환경에 나타날 수 있습니다. 이 경우 선택적 유형 T?에 T 유형의 값이 포함되어 있으면(즉, 해당 값이 Optional.Some(T)) 선택적 유형은 true이고, 그렇지 않으면 false입니다.
선택적 유형의 인스턴스에 값이 포함되어 있으면 후위 연산자를 사용할 수 있습니다! 이 값에 다음과 같이 접근하려면:
optionalInteger = 42 optionalInteger! // 42
연산자를 사용하세요! nil 값으로 선택적 변수를 검색하면 런타임 오류가 발생합니다.
옵셔널 체인 및 옵셔널 바인딩을 사용하여 옵셔널 표현식에 대한 작업을 선택적으로 수행할 수 있습니다. 값이 nil이면 작업이 수행되지 않으며 런타임 오류가 보고되지 않습니다.
Swift에서 옵션 유형의 적용을 이해하기 위해 다음 예를 자세히 살펴보겠습니다.
import Cocoa var myString:String? = nil if myString != nil { print(myString) }else{ print("字符串为 nil") }
위 프로그램의 실행 결과는 다음과 같습니다.
字符串为 nil
옵션 유형은 포인터의 nil 값과 유사합니다. Objective-C는 nil이 클래스에만 적용되는 반면 옵션은 모든 유형에 사용 가능하고 더 안전합니다.
강제 구문 분석
옵션 유형에 실제로 값이 포함되어 있음을 확인한 후 옵션 이름 뒤에 느낌표(!)를 추가하여 값을 가져올 수 있습니다. 이 느낌표는 "이 옵션에 값이 있다는 것을 알고 있습니다. 이를 사용하십시오."를 의미합니다. 이를 옵션 값 강제 풀기라고 합니다.
예제는 다음과 같습니다.
import Cocoa var myString:String? myString = "Hello, Swift!" if myString != nil { print(myString) }else{ print("myString 值为 nil") }
위 프로그램의 실행 결과는 다음과 같습니다.
Optional("Hello, Swift!")
옵션 값을 강제로 구문 분석하려면 느낌표(!)를 사용합니다.
import Cocoa var myString:String? myString = "Hello, Swift!" if myString != nil { // 强制解析 print( myString! ) }else{ print("myString 值为 nil") }
위 프로그램의 실행 결과는 다음과 같습니다.
Hello, Swift!
참고:
!
来获取一个不存在的可选值会导致运行时错误。使用!
来强制解析值之前,一定要确定可选包含一个非nil
값을 사용하세요.
자동 파싱
옵션 변수 선언 시 물음표(?)를 느낌표(!)로 바꿀 수 있습니다. 이렇게 하면 선택적 변수를 사용할 때 값을 얻기 위해 느낌표(!)를 추가할 필요 없이 자동으로 해결됩니다.
예제는 다음과 같습니다.
import Cocoa var myString:String! myString = "Hello, Swift!" if myString != nil { print(myString) }else{ print("myString 值为 nil") }
위 프로그램의 실행 결과는 다음과 같습니다.
Hello, Swift!
옵션 바인딩
옵션 바인딩을 사용하여 옵션 유형에 값이 포함되어 있는지 확인하세요. 값이 있으면 임시 상수나 변수에 값을 할당하세요. 선택적 바인딩은 if 및 while 문에서 선택적 값을 평가하고 해당 값을 상수나 변수에 할당하는 데 사용할 수 있습니다.
if 문에 다음과 같이 선택적 바인딩을 작성합니다.
if let constantName = someOptional { statements }
간단한 선택적 바인딩 예를 살펴보겠습니다.
import Cocoa var myString:String? myString = "Hello, Swift!" if let yourString = myString { print("你的字符串值为 - \(yourString)") }else{ print("你的字符串没有值") }
위 프로그램의 실행 결과는 다음과 같습니다.
你的字符串值为 - Hello, Swift!