[Swift] Swift 문법 정리

준수·2022년 2월 21일
0
post-thumbnail

변수와 상수

변수

// 정상 동작
var 변수명: 데이터타입 =// 값의 데이터타입을 자동으로 판별하여 변수에 데이터타입을 지정
var 변수명 =// 오류 발생 (선언과 값 대입이 분리되어 있는 경우)
var 변수명
변수명 =

상수

let 변수명: 데이터타입 =

함수 선언

// 기본 형식
func 함수명 (매개변수, ~) -> 반환형 { 명령어; return 반환값 }

// 레이블 활용
func 함수명 (매개변수명 전달인자레이블: 매개변수타입, ~) -> 반환형 { 명령어; return 반환값 }

// 기본 예시 : 레이블 사용
func funcSample(first name : String, second age : Int) -> Void {
	명령어;
}

// 함수 호출
funcSample(first : "문익점", second : 26) 

// '_' 사용 : label을 생략하고 값만 대입하여 호출할 수 있음
func funcSample(_ name : String, second age : Int) -> Void {
	명령어;
}

// 함수 호출
funcSample("문익점", second : 26)

Optional

nil이란?

Swift에서 nil은 다른 언어의 Null과 같이 아무런 값이 없는 상태를 의미한다.

정수 + 정수를 계산하기 위해 변수끼리 더했는데, 하나의 값이 nil이라면 오류가 발생한다.

이 때, 일반적인 변수에는 nil 값이 들어갈 수 없는데, 이를 non-optional 이라고 한다.

반대로 optional 인 변수는 nil 값이 들어갈 수 있는 변수를 말한다.

선언 방식

// 물음표를 붙이면 옵셔널 변수가 된다...!
var variable: String?

Optional Unwrapping

optional로 선언된 변수에 nil이 아니라 값이 분명히 들어있다고 확신한다면, !를 통해 값을 강제로 꺼낼 수 있다.

var sum = variable! + variable!

// 여기서 optional 변수 variable에 nil값이 들어있다면 에러가 발생하므로
// nil값이 들어있는지 검사 후 사용이 필요하다.

Optional Binding

!을 사용하지 않고 새로운 상수를 선언한 뒤 상수에 옵셔널 변수의 값을 넣어보고, nil이 아니면 연산에 사용하는 방식.

// 사용 예시
if let nonOptionalVariable = OptionalVariable { 연산 } 

Optional Chaining

Optional Chaining은 Optional Wrapping과 다르게 값이 없어도 에러가 아닌 nil 값을 반환한다.
따라서 Optional Chaining의 값은 언제나 optional 값이 된다.

class Bus {
  var people : People?
}

class Bus {
  var countOfPeople : Int? = 13
}

위의 예제로, 버스의 인스턴스 bus에 승객이 없을 수 있으니 optional이라고 할 때,

bus.people!.countOfPeople으로 값에 접근한다면 런타임 에러가 발생할 수 있다.

이를 피하기 위해 bus.people?.countOfPeople을 사용하면 nil 값이어도 값에 접근할 수 있어
if문 등으로 분기하여 다르게 처리할 수 있다.

위 방법을 사용하면 people, countOfPeople 두 변수 모두의 옵셔널 바인딩을 처리할 수 있다.

profile
🤭Swift My Velog🤭

0개의 댓글