Swift_Tuple & Optional

7125 단어 iOSswiftXcodeXcode

1. Tuple

  • 여러 값을 하나의 항목으로 임시적 그루핑하는 방법.

  • 서로 다른 타입의 값들이 튜플에 저장될 수 있으며, 모두 동일한 타입의 값이어야 한다는 제약도 없다.

	let myTuple = (10, 432.432, "this")
	//튜플 선언

	let myTuple1 = (count : 10, length : 432.432, msg : "hello")
    	//튜플을 생성하는 시점에서 각각의 값을 변수에 할당

	let (myInt, myDouble, myString) = myTuple
    	//하나의 구문으로 튜플의 모든 값을 추출하여 변수 또는 상수에 할당
        
	var (myInt, _, myString) = myTuple
    	//부동소수점 수는 무시하고 정수와 문자열 값만 튜플에서 추출하여 변수에 할당

2. Optional Type

  • 변수 또는 상수 값이 할당되지 않은 상황을 처리하기 위한 접근 방식
var index: Int?
  • 어떤 값도 할당되지 않은 옵셔널은 실제로 nil 값을 가진다.

    Swift에서는 null 대신 nil을 사용. 객체 지향 언어인 Objective-c 에서는 null과 nil이 모두 존재했으나 Swift는 객체 지향 언어가 아니라 null과 nill의 구분이 사라짐

    Objective-c
    -> nil : 클래스 객체를 참조하는데 사용
    -> null : 그 밖의 다른 포인터 자료형

    Swift
    -> 오직 nil만 존재

  • 만약 옵셔널에 값이 할당되었다면 해당 값이 옵셔널 내에서 래핑되었다라고 표현한다.

  • 옵셔널 안에 래핑된 값을 사용할 때는 강제 언래핑이라는 개념을 이용한다. 래핑된 값을 옵셔널 데이터 타입에서 옵셔널 이름 뒤에 ! 느낌표를 두어 추출되게 한다.

var index: Int?

index = 3

var alphabet = ["A", "B", "C", "D", "E"]

if index != nil {
    print(alphabet[index!])
} else {
    print("index does not contain a value")
}
//알파벳을 나타내는 문자열 배열의 인덱스를 담는 옵셔널 변수를 사용
  • 강제 언래핑 대신, 옵셔널로 할당된 값은 옵셔널 바인딩을 이용하여 임시 변수나 상수에 할당 가능
if let constantname = optionalName {

}

if var variableName = optionalName {

}
  • 강제적으로 언래핑되도록 옵셔널을 선언 : 해당 방식으로 옵셔널을 선언하면 강제 언래핑이나 옵셔널 바인딩을 하지 않아도 값에 접근 가능
var index: Int! 
//옵셔널 강제적 언래핑

index = 3

var alphabet = ["A", "B", "C", "D", "E"]

if index != nil {
    print(alphabet[index!])
} else {
    print("index does not contain a value")
}
/*이제 index 옵셔널 변수는 강제적으로 언래핑되도록 선언되어, 
print 동작 시 배열의 인덱스로 사용될 때 값을 언래핑할 필요가 없다.*/
  • 스위프트에서 옵셔널이 아닌 변수 또는 상수에는 nil을 할당할 수 없다.
    (Nullable해야 가능)

좋은 웹페이지 즐겨찾기