Swift 문법 - 2

2023. 9. 26. 12:47iOS

<제어문(Control Flow)>

1. 반복문

- C언어 스타일의 증가 for문은 Swift 3에서 삭제

- for in 문을 사용하여 구현

1.1. for in 문 구조

- 기본 구조:

for index in [컬렉션 혹은 범위] {
    print(index)
}

- 참조체 index가 사용되지 않을 경우 '_'(underscore)로 생략 가능

for _ in [컬렉션 혹은 범위] {
    print("hello")
}

 

1.2. for in 문 활용

- 범위지정연산자(...)를 활용한 배열의 항목을 접근 예:

- key:value 형식의 dictionary 항목 접근 예:

1.3. dictionary의 특징

- 순서 없음

- 수정 가능

- key를 이용한 value 검색 가능

1.4. while 문

- C의 while문과 거의 동일하나, 표현식이 약간 다름

- while문 예:

1.5. repeat ~ while 문

- c 언어의 do...while문을 대체

- 조건에 상관없이 repeat 내의 문장을 반드시 1회 실행

1.6. break

- break을 만나면 해당 루프를 빠져나옴

- break 사용 예:

*주의: if 제어문 뒤 문장이 한줄이어도 반드시 괄호({})로 감싸야 함

1.7. continue

- continue를 만나면 반복문에서 continue 이후의 모든 코드를 건너뛰고 반복문의 상단 시작 위치로 돌아감

- continue를 활용한 홀수 출력 예:

 

2. 조건문

2.1. if 문 구조

- C언어와 달리 불리언 표현식 좌우로 괄호로 감싸지 않음

- 문장 길이와 상관없이 true일 경우 실행할 코드 좌우로 괄호를 필수적으로 사용

- AND 연산을 실행하는 연산자(C의 &&): ,

- if~else, 다중 if~else 문은 표현식의 차이를 제외하고 거의 동일

 

2.2. if 문 활용

- and 연산자를 활용한 조건 지정 예:

- 다중 if-else 문 예:

2.3. switch-case 문 구조

- 각 case의 조건이 참일 경우 해당 문장을 실행

- 각 case는 반드시 몸체에 문장을 가져야 함

- case가 모두 거짓일 경우 default 블록 실행

- 각 case 종단에 break문을 기입하지 않아도 들어있기 때문에 case 실행 후 switch를 빠져나옴

- 콤마(,)를 사용하여 여러 경우를 포함하는 case 조건 사용 가능

- case에 where 절을 추가하여 부가적인 조건을 넣을 수 있음

- case 문장에 fallthrough문 사용 시 자동 break 처리하지 않고 다음 코드를 수행

2.4. switch-case 문 활용

- switch-case 사용 예:

- 콤마를 사용한 case 결합:

- *범위 지정 매칭을 활용한 BMI 지수 측정:

- where 절을 활용한 조건 추가 예:

- fallthrough를 활용한 예:

2.5. where 절 활용

- for 문에서의 활용:

 

<함수>

3.  함수

3.1. 함수의 기본 개념

- 특정 작업을 수행하는 코드 블록

- parameter(매개변수): 함수 정의부의 인자

- argument(인수): 함수 호출 시 넘겨주는 actual parameter

- 메서드: 특정 클래스. 구조체, 열거형 내의 함수

3.2. 함수의 정의 및 호출

- 정의 시 기본 구조:

func <함수명> (<매개변수 이름>: <매개변수 타입>, <매개변수 이름>: <매개변수 타입>,... ) -> <반환값 타입> {

  // 함수 코드

}

- func: 함수라는 것을 스위프트 컴파일러에게 알려주는 키워드

- <함수명>: 함수에 할당되는 이름

- <매개변수 이름>: 함수 코드 내에서 참조되는 매개변수의 이름

- <매개변수 타입>: 함수에 전달되는 매개변수의 타입

- <반환값 타입>: 함수가 반환하는 결과에 대한 데이터 타입으로, 

반환하지 않으면(Void) 반환값 타입(Void)과 ->는 생략 가능

- 함수명()을 통해 호출 가능

- 리턴값이 없는 함수의 정의 및 호출 예:

- 두 매개변수를 더한 값을 리턴하는 함수의 정의 및 호출 예:

- 함수의 자료형은 (매개변수 자료형, 매개변수 자료형...) -> 리턴값 자료형으로 이루어짐

3.3. 매개변수명 지정

- 함수 선언 시 parameter name과 argument label을 지정할 수 있음

- 함수 정의 시 parameter name, 호출 시 argument label을 사용

- 함수 선언 시 argument label 지정을 생략할 수 있으며, 이 경우 parameter name이 둘다 역할

- argument label을 '_'(underscore)로 지정 시 호출할 때 argument label을 생략 가능

- 보통 첫번째 argument label만 생략하고, 두번째부터 지정하여 사용

- 다양한 함수 정의 예:

3.4. 함수명

- swift에서 함수명은 argument label까지 포함

- #function 리터럴을 활용하여 함수명을 확인할 수 있음

- *함수명 출력: 

 

 

4. 참고자료: iOS 프로그래밍 기초 강의 - 한성현 교수님

'iOS' 카테고리의 다른 글

Mac 입문, Xcode 입문  (0) 2023.10.31
first class object - 2, Class  (0) 2023.10.17
Swift 함수, first class object - 1  (0) 2023.10.10
Swift 문법 - 1  (0) 2023.09.19
Swift 입문  (0) 2023.09.12