함수 Function
- 특징
- 독립적으로 처리될 수 있는 부분을 분리하여 구조화 한 객체
- 여러번 호출하여 사용할 수 있다
- Swift 는 함수형 프로그래밍 패러다임을 채택하고 있기 때문에, 함수형 프로그래밍의 특징을 이해하는 것은 매우 중요⭐⭐⭐
- 일반 함수
- 프로그래밍 언어/프레임워크 에서 제공하는 함수
- 기본적인 데이터 처리, 연산을 수행하기 위해 사용
- ex) print(), reversed()
- 사용자 정의 함수
- 개발자가 필요에 의해 직접 만든 함수
- 사용자 정의 함수
- func 키워드 사용
- 함수명 첫 글자는 영어 / _ 언더바로 시작
- 매개변수가 여러개라면 , 콤마 를 통해 구분 / 매개 변수가 없다면 소괄호를 빈 채로 유지한다
- 반환타입(returnType)과 반환값의 데이터 타입은 일치해야 한다
- 함수 호출
- 함수이름()
- 호출 시에는 func 키워드를 사용하지 않는다
- 호출시에 사용하는 소괄호()는 함수를 호출하는 연산자
- 매개변수가 있다면 괄호 안에 인자값을 넣어서 호출해야 한다
매개변수 Parameter
- 특징
- 외부 매개변수
- 함수의 식별자 일부로 사용
- 내부 매개변수
- 입력된 인자값을 함수 내부에서 참조하기 위해 사용하는 변수
- 외부 매개변수명 생략 가능 > _ 언더바를 적어준다
- 가변 인자
- 일반적으로는 정해진 형식,개수에 맞는 인자값만을 처리한다
- 가끔 가변적으로 인자를 받아야 할 때가 있는데 그럴 때는 ... 연산자를 사용한다
- 입력된 인자값은 배열로 처리 , 실행 블록에서 for - in 구문으로 읽을 수 있다
- 입력 개수를 특정할 수 없는 형태의 매개변수에서 사용
- 기본값
- 기본값을 지정할 수 있다
- 반드시 입력을 받아야하는 값이 아니라면 인자값을 생략할 수 있게 해준다
- 매개변수 수정
- 파라미터를 변수화 시켜준다
- InOut 키워드
- 기본적으로 함수 내부의 작업은 함수 외부에 영향을 줄 수 없다
- InOut 키워드를 이용하면, 내부에서 수정된 인자값이 외부에까지 영향을 미칠 수 있다
- 외부에서 전달해주는 값은 변경이 있을 수 있기 때문에 오직 변수만 전달할 수 있다
- 호출시에는 & 연산자를 사용해서 호출한다 (주소를 전달)
- inout 키워드는 변수의 주소를 전달하며, 파라미터 변경 시 실제 원본 값도 변경된다
- 함수와는 달리, 클래스로 구현된 인스턴스는 inout 키워드를 사용하지 않아도 항상 참조에 의해 전달됨
- 변수의 생존 범위, 생명 주기
- 스코프 Scope :: 변수의 생존 범위
- 전역변수
- == Global 변수
- 프로그램의 최상위 레벨에서 작성된 변수
- 프로그램 내 모든 위치에서 참조 가능
- 특정 경우 제외, 프로그램 종료 전까지 삭제되지 않는다
- 지역변수
- == Local 변수
- 특정 범위에서만 참조, 실행할 수 있는 변수
- 선언된 블록이 실행되면 생성되었다가, 블록 종료 시 삭제된다
- 전역변수
- 변수가 생성된 블록이 아닌, 다른 블록에서 사용되려면 초기화 되어 있어야 한다
- 초기화 되지 않았다 -> 메모리를 할당받지 못했다. 주소값이 없다. 오류 발생
'iOS > Swift' 카테고리의 다른 글
[Swift] 열거형 enum (0) | 2023.11.20 |
---|---|
[Swift] 구조체 Struct / 클래스 Class (0) | 2023.11.16 |
[Swift] 일급함수(일급객체), 클로저(익명함수) (0) | 2023.11.14 |
[Swift] 옵셔널 Optional (0) | 2023.11.14 |
[Swift] 배열,집합,튜플,딕셔너리 (0) | 2023.11.13 |