튜플
- 튜플이란 여러값을 하나의 개체에 일시적으로 묶는 방법이다.
- 튜플 안에 있는 값들은 타입에 제약이 없으며 동일한 타입일 필요 또한 없다.
let ATuple = (3.14, 20, "재우")
- 인덱스를 통해 간단히 접근이 가능하다.
let ATuple = (3.14, 20, "재우") var AIndex = ATuple.1 print(AIndex)
20
옵셔널 타입
- 옵셔널 타입은 다른 언어에는 없는 Swift언어의 유일한 개념이다,
- 값을 추출할 때 오류가 발생할 것 같은 값을 옵셔널 타입이라는 객체로 감싸서 추출을 한다.
ex) int("32") -> 32가 아닌 Optional(32)으로 반환 int("jaewoo") -> 아무런 값도 없는 nil값으로 반환
- 옵셔널 타입의 변수선언은 선언부 뒤에 "?"문자를 사용하여 선언한다.
var option: int?
option 변수는 정수 값을 갖거나 nil(아무 값이 없음)값을 반환 할 수 있다.
- 강제 언래핑
옵셔널 타입으로 감싸져 있는 값을 "?", "!"를 사용하여 강제로 풀어주는 작업을 뜻한다.ex) var option: int? option = 25 print(option) -> Optional(25) print(option!) -> 25
? -> 자료형 뒤에
! -> 변수명 뒤에
- 강제 언래핑을 사용하려는 값이 nil값이 아니라는 전제에 사용해야 한다.
var option: int? option = 25 if x != nil { print(option!) } else { print("nil") }
- 가장 좋은 언래핑 방법은 옵셔널 바인딩이다.
if (let or var) letOrVarName = optName { - 옵셔널 변수에 값이 있다면 언래핑 하여 일반 (상,변)수인 letOrVarName에 대입 하고 if문을 실행한다 - 만약 값이 없다면 if문의 조건이 거짓이 되서 if문을 실행하지 않는다. }
형 변환
- as로 upcasting
자식객체 as 부모클래스 -> 자식이 추상화된다.
- as!, as? 로 downcasting
부모객체 as! 자식클래스 -> 일반 타입으로 반환 , 다운캐스팅이 반드시 성공한다는 확신이 있을 때 부모객체 as? 자식클래스 -> 옵셔널 타입으로 반환, 확신이 없을 때
*Nil 합병 연산자(Nil-Coalescing Operator)
- 옵셔널변수 ?? nil 일때 할당 되는 값을 정해주는 연산자이다.
- 옵셔널 변수의 값이 nil일 때 ?? 다음값으로 할당된다.
이해가 잘 안되면 ?? 다음 값이 디폴트 값으로 ?? 앞에 나오는 옵셔널 변수가 nil일 경우에 대비하여 디폴트 값을 출력할 수 있게 하는 연산자라고 기억을 하자
ex) let firstName = "Yoo" var lastName: String? var myName = lastName ?? firstName // lastName의 값이 nil이므로 ?? 뒤에 있는값이 할당 print(myName) ->Yoo lastName = "JaeWoo" var myName = lastName ?? firstName // lastName의 값이 nil이 아니므로 그대로 출력 print(myName) ->JaeWoo
*Guard문
- 조건식이 거짓일 때 실행되는 구문이다.(return을 이용하여 빠져 나올 수 있다.)
- 안에서 쓰던 변수들을 밖에서도 사용 가능하다.
guard문 형태) guard <불리언 표현식> else { 표현식이 거짓일 경우에 실행될 코드 <빠져 나갈 구문> } 표현식이 참일 경우에 실행될 코드
ex) func yourAge(year: Int?) { guard let age = year, age < 26 else { print("저보다 나이가 ",year! - 25, " 만큼 많으시군요") // 조건식이 거짓일 때 return } print("저와의 나이차가 ",25 - year!," 만큼 나는군요.") // 조건식이 참일 때, 변수 year을 사용할 수 있다. } yourAge(year: 26)
참고영상
15:18 까지 학습하였습니다.