분류 전체보기
스위프트(Swift) - 함수(Function) Ⅴ. 변수의 생존 범위와 생명 주기
프로그래밍에서 변수와 상수는 정의된 위치에 따라 사용할 수 있고, 생존할 수 있는 일정 영역을 부여받는다. 이를 변수의 생존 범위, 또는 스코프(Scope)라고 한다. 영역을 기준으로 변수를 구분해 보면 크게 전역변수와 지역변수로 나눌 수 있다. 전역변수는 글로벌(Global) 변수라고도 하는데, 프로그램의 최상위 레벨에서 작성된 변수를 의미한다. 이 변수는 프로그램 내 모든 위치에서 참조가 가능하며, 특별한 일이 없으면 프로그램이 종료되기 전까지는 삭제되지 않는다. 반면, 로컬(Local) 변수라고도 불리는 지역변수의 경우 특정 범위 내에서만 참조하고 사용할 수 있는 변수를 뜻한다. 조건문이나 함수 구문 등 특정 실행 블록 내부에서 선언된 변수는 모두 지역변수이며 선언된 블록 범위 안에서만 이 변수를 ..
스위프트(Swift) - 함수(Function) Ⅳ. InOut 매개변수
스위프트에서 함수 내부에서 발생하는 사건은 함수 외부에 영향을 미칠 수 없다. 함수 내부와 외부에 동일한 인자값이 존재하지만 함수 내부에서 변경된 인자값은 함수 외부의 인자값에 아무런 영향도 끼칠 수 없다. 이는 단순히 같은 값을 가지고 있을 뿐, 둘은 단절된 서로 다른 객체이기 때문이다. var cnt = 30 func autoIncrement(value: Int) -> Int { var value = value value += 1 return value } print(autoIncrement(value: cnt)) // 함수 내부의 value 값 : 31 print(cnt) // 외부에서 정의된 cnt 변수값 : 30 cnt 변수를 autoIncrement(value:) 함수의 인자값으로 입력하면 3..
스위프트(Swift) - 함수(Function) Ⅲ. 가변인자, 기본값, 수정
가변인자 보통 함수는 정의된 형식과 개수에 맞는 인자값만 처리하지만, 때에 따라서 가변적인 개수의 인자값을 입력받아야할 경우도 분명 존재한다. 스위프트에선 인자값의 입력 개수를 제한하지 않도록 하는 함수 정의 형식을 제공하는데, 함수를 정의할 때 매개변수명 다음에 '...' 연산자를 추가하면된다. func 함수명(매개변수명 : 매개변수타입...) 이런식으로 정의된 매개변수는 가변인자로 인식되며 개수를 제한하지 않고 인자값을 입력받게된다. 이렇게 입력된 인자값을 스위프트는 배열로 처리하게 된다. 다음 예시를 살펴보자. func avg(score: Int...) -> Double { var total = 0 // 점수 합계 for i in score { // 배열로 입려된 값들을 순회하며 점수 합산 tota..
스위프트(Swift) - 함수(Function) Ⅱ. 내부 매개변수, 외부 매개변수
스위프에선 함수를 정의할 때 매개변수를 용도에 따라 두 가지로 분리할 수 있다. 바로 내부 매개변수와 외부 매개변수이다. 외부 매개변수는 함수를 호출할 때 인자값에 대한 인자 레이블(Argument Label) 역할을 하고 동시에 함수의 식별자 일부로 사용된다. 반면, 내부 매개변수는 입력된 인자값을 함수 내부에서 참조하기 위해 사용하는 변수이다. 함수의 범위 내에서는 내부 매개변수를 일반 변수처럼 사용해 인자값을 얼마든지 참조할 수 있다.별도로 외부 매개변수를 나누지 않을 경우 일반 매개변수가 인자 레이블 역할까지 겸하지만, 외부 매개변수를 명시적으로 정의하면 외부매개변수가 인자 레이블이 된다. 형식은 다음과 같다. func 함수이름( : , : ...) { // 함수 내용 } 간단하다. 그냥 내부 매..
스위프트(Swift) - 함수(Function) Ⅰ. 함수의 기본 개념
함수(Fuction)은 대부분의 프로그래밍 언어에서 지원하는 개념으로, 프로그램 실행 과정 중 독립적으로 처리되는 부분을 따로 분리하여 구조화한 객체를 뜻한다. 함수는 일반 함수와 사용자 정의 함수로 나눌 수 있다. 일반 함수는 프로그래밍 언어나 프레임워크에서 제공하는 함수로 기본적인 데이터 처리나 연산 등을 수행하기 위해 사용된다. 대표적인 예로 print함수 가 있다. 하지만 프로그래밍을 하는 과정에서 일반 함수만으로 모든 것을 처리하는 것은 쉽지 않다. 이럴 때 필요한 기능들을 사용자가 직접 함수로 만들어 사용하는 것을 사용자 정의 함수라고 한다. 이제 그럼 사용자 정의 함수에 대해 알아보자. 사용자 정의 함수 스위프트에서 함수를 정의하는 형식은 다음과 같다. func 함수이름(매개변수1: 타입, ..
스위프트(Swift) - 옵셔널(Optional)
옵셔널(Optional)은 스위프트에서 언어차원에서의 프로그램 안전성을 높이기 위해 사용하는 개념으로 'nil을 사용할 수 있는 타입과 사용할 수 없는 타입을구분하고, 사용할 수 있는 타입을 옵셔널 타입(Optional Type)이라고 부른다'고 할 수 있다. 여기서 말하는 nil이란, 값이 없음을 의미하는 특수한 값이다. 정수형의 0이나, 문자열의 ""(공백)과 다른, 순수하게 아무 값도 없다는 것을 의미한다. 이러한 특수성 때문에 nil은 종종 실제 값으로는 처리할 수 없는, 무언가 문제가 발생했을 때를 의미하기 위해 사용된다. 보통 문제가 발생했을 때는 오류를 발생시키는데 이는 그닥 좋은 흐름은 아니다. 왜냐하면 사소한 것 하나 때문에 실행을 중단시키는 것 뿐만 아니라 안정성에도 좋지 않기 때문이다..