Swift 문법 종합반 - 기초 | Notion
목차
teamsparta.notion.site
https://teamsparta.notion.site/Swift-1-9e7005a8570945c485e1f257ef02d11d
Swift 문법 종합반 - 기본 (1) | Notion
수업 목표
teamsparta.notion.site
swift 기초+기본 문법 강의 수강, 복습
조건문 정리 및 실습
조건문
프로그램의 흐름을 제어하는 문법으로, 특정 조건이 true인지 false인지에 따라 코드블록을 실행하거나 건너뛸 수 있습니다.
if 문
- 조건이 true 이면 코드 블록을 실행하고, false 이면 else 의 코드블록이 실행됩니다.
- if 와 else 중간에 조건을 추가하려면 else if 로 조건을 추가할 수 있습니다.
- if + 조건(참이나 거짓을 판단할 수 있는 표현식 ) + { 참(true)이면 중괄호 안의 내용 실행 만족했을 때 어떤 동작을 할 것인지 }
- 거짓이면 중괄호 안의 내용 실행 x
- else { 위 조건이 만족하지 않으면(거짓일 때) 실행 } - 마지막에 없다면 넘어가서 다른 것 실행
- else if { 한번 더 조건을 쓸 수 있다. 만족하면 실행 } - 계속 쓸 수 있음
- 조건문 안에 조건문 가능
- ,(comma) 로 if 뒤 조건문1, 조건문2, 조건문3 { } 가능
guard 문
if 문을 사용할 때 불편함이 생겨서 사용 (if문 - 들여쓰기의 계속됨, 코드의 가독성)
- guard 는 조건이 false일 때 코드를 더이상 실행시키지 않고 코드블록을 빠져나가는 조건문입니다.
- 조건이 true일 경우 코드를 계속 진행하고, false일 경우 else 코드 블록에서 탈출해야합니다.
- else 블록은 필수입니다.
- guard true(조건) else { return false (조건 거짓일때 사용할 코드)}
- // 위 조건이 참일 때 실행할 코드
- return true
if vs guard
- if 조건문은 true 일 때 코드블록을 실행하고, false 일 때 다른처리를 할 수 있습니다.
- guard 조건문은 false일 때 즉시 탈출하는 방식입니다. - early exit
- 어떤 조건을 감시하고 만족하면 아래로 넘어가서 실행, 만족하지 않으면 else 바로 실행 ( 먼저 종료 )
- if 조건문은 코드블록을 명시적으로 작성해야 하지만 guard 는 true 일 때 코드블록이 없고 계속 진행합니다.
func checkNumbersOf1(password: String) -> Bool {
if password.count >= 6 {
// 로그인을 처리하는 코드 작성
return true
} else {
return false
}
}
// guard 문 사용시
func checkNumbersOf2(password: String) -> Bool {
// 감시하다
guard password.count >= 6 else {
return false // 종료 조건 - 함수 내에서는 return / throw
}
// 로그인을 처리하는 코드 작성
return true
}
switch 문
- 하나의 값을 여러 경우와 비교하는 조건문입니다.
- if문 보다 한정적인 상황에서 사용
- 가능한 모든 경우의 조건, 경우의 수를 다루어야 한다.
- case, default 를 사용해서 조건들에 맞는 코드를 실행할 수 있습니다.
- case 에서 조건을 확인하여 조건이 맞다면(조건과 비교하여 맞으면 실행) 코드를 실행하고 switch 코드블록에서 빠져나갑니다.
- case 에서 맞는 조건이 없다면 default 에서 구현한 코드가 실행됩니다.
- case, default 조건 뒤에는 : (콜론) 을 사용하여 동작을 구현해야 합니다.
- case 에서 실행하고 싶은 코드가 없다면 break 키워드를 사용해야 합니다. - 아무것도 실행하고 싶지 않은 경우
- 아무런 코드가 없으면 빌드오류가 발생합니다.
- case 에서 조건이 없다면 default 코드를 실행합니다.
- case 에서 조건이 맞아서 실행된 후 아래의 조건도 확인하고 싶다면 fallthrough 키워드를 사용해야 합니다.
switch 문 예시
switch score { // score를 switch 코드블록에 넣습니다.
case 50...: // score가 50 이상이면 아래 코드를 실행합니다.
print("50점 이상이시군요")
fallthrough // 아래의 case도 확인합니다.
case 50: // score가 50이면 아래 코드를 실행합니다.
print("딱 50점이시네요?")
default: // score가 위의 조건에 맞는게 없다면 아래 코드를 실행합니다.
print("공부를 더 하세요!")
}
guard 문 예시
// 반복문에서 사용하는 guard
for i in 0...10 { // 0부터 10까지 반복합니다. 현재값은 i에 넣습니다.
print(i)
guard i < 5 else { break } // i가 5보다 작다면 true이기 때문에 계속 진행합니다.
// i가 5보다 크다면 false이기 때문에 else 코드블록을 실행합니다.
// else 코드블록에서는 for 반복문을 탈출하는 break
클래스와 구조체
class 특징
- 프로퍼티와 메소드 로 구성되어 있습니다.
- 구조체, class 안에 있는 변수,상수를 프로퍼티 라고 합니다.
- 구조체, class 안에 있는 함수를 메소드 라고 합니다.
- class의 인스턴스를 생성하여 사용할 수 있습니다.
- class 안에서 사용되는 변수와 상수인 프로퍼티에는 default 값을 정해줄 수 있습니다.
- class의 인스턴스를 생성할 때 반드시 초기화를 해주어야 합니다.
- init 초기화를 제공해야 합니다.
- 모든 프로퍼티에 default 값을 제공한다면 init 초기화를 생략할 수 있습니다.
- 모든 프로퍼티가 Optional 인 경우 init 초기화를 생략할 수 있습니다.
- 초기화를 도와주는 컨비니언스 이니셜라이저(convenience initializer)를 제공합니다.
- class를 사용해서 만들어진 인스턴스는 Reference Type 입니다.
- 인스턴스를 let 으로 만들어도 프로퍼티 변경이 됩니다 :)
- 함수에 class의 인스턴스를 전달하고 프로퍼티를 변경하면 원본도 변경이 됩니다.
- 상속 가능
- 하위클래스가 상위클래스의 속성(프로퍼티)와 행동(메소드)를 물려받아서 사용할 수 있습니다.
- 상속은 객체지향프로그래밍에서 자세하게 다룰 예정이에요.
struct 특징
- 프로퍼티와 메소드 로 구성되어 있습니다.
- 구조체, 클래스 안에 있는 변수,상수를 프로퍼티 라고 합니다.
- 구조체, 클래스 안에 있는 함수를 메소드 라고 합니다.
- 구조체의 인스턴스를 생성하여 사용할 수 있습니다.
- 구조체 안에서 사용되는 변수와 상수인 프로퍼티에는 default 값을 정해줄 수 있습니다.
- Memberwise Initializer(멤버와이즈 이니셜라이저)를 제공합니다.
- 직접 init 을 정의하지 않아도 모든 프로퍼티의 초기화를 자동으로 생성해주는 기능이에요.
- 구조체를 사용하여 만들어진 인스턴스는 Value Type 입니다.
- 구조체의 인스턴스는 값이 복사 되므로, 서로 다른 값으로 처리됩니다. (이부분은 나중에 자세하게 알아볼게요!)
- 메소드에서 프로퍼티를 변경하려면 mutating 키워드를 사용해야 됩니다.
- 상속 불가능
- 클래스와 달리 구조체는 다른 구조체로부터 상속받거나 상속할 수 없습니다.
- 인스턴스를 let 으로 만들면 내부 프로퍼티 변경할 수 없습니다. 프로퍼티를 변경하려면 var 로 만들어야 합니다.
'내일배움캠프 iOS' 카테고리의 다른 글
iOS) TIL #8 학습법 및 알고리즘 특강 (0) | 2024.10.30 |
---|---|
iOS) TIL #7 swift 기본 문법 공부(상속,재정의) (1) | 2024.10.29 |
iOS) TIL #5 미니 프로젝트 발표 및 마무리 (1) | 2024.10.25 |
iOS) TIL #4 테이블 뷰 수정 및 Github 활용 (0) | 2024.10.24 |
iOS) TIL #3 테이블 뷰 구현하기 (0) | 2024.10.23 |