1.1 데이터형과 변수
# 스위프트의 데이터형
스위프트에선 클래스에서 만들어진 객체는 물론, 정수, 구조체 등의 데이터형도 모두 인스턴스(instance)라고 부른다.
스위프트에는 데이터 자체와 그것을 가리키는 포인터(pointer)라는 개념이 없다. 단, 여러 변수를 통해 동시에 참조될 가능성이 있는 형과 그렇지 않는 형은 구별해 두어야 한다.
C언어와 마찬가지로, 수치 데이터를 변수에 대입하거나 함수에 전달할때 데이터가 복제되서 이후 연산이나 처리 시에 기존 데이터에는 영향을 주지 않는다. 스위프트에서는 이런 성징을 가진 데이터형을 값형(value type)이라고 한다.
값형 데이터는 기본적으로 하나의 변수만 참조할 수 있다.
값형과 달리 대입 시에 복제를 하는 것이 아니라 데이터 자체에 대한 참조(다른 언어의 포인터를 생각하면 됨)를 전달하는 것을 참조형(reference type)이라고 한다. 스위프트에서 대표적인 참조형은 클래스의 인스턴스.
Objective-C는 C언어와 객체 지향 언어를 합친 하이브리드 언어로 설계되어 서로 다른 개념을 조합해서 프로그램을 구축하는 것이 본질이였다면, 스위프트는 Objective-C를 기반으로 하고 있지만, 전혀 다른 개념으로 설계된 언어이다.
# 변수와 실수를 표현하는 형
스위프트 프로그래밍에선 정수에는 Int형, 실수(부동 소수점)에는 Double형 또는 Float형을 사용한다.
정수형에는 Int형 외에도 비트 수에 제약이 있는 형이나 부호 없는 정수형인 UInt형도 있지만, 보통은 Int형을 사용할 것은 권장하고 있다.
실수 표현 시에는 오차가 발생하기 때문에, 계산에 의해 발생할 오차가 걱정될 경우에는 Double형을 사용하는 것이 좋다.
도형의 위치나 크기를 지정할 때는 Float형으로도 충분하다.
스위프트의 정수나 실수는 C언어 정수나 실수처럼 +나 -를 사용해서 연산할 수 있으며, Objective-C의 수치 객체(NSNumber)처럼 배열이나 딕셔너리에 객체로 저장할 수 있다.
# 논리형, 문자형, 문자열형
조건의 참거짓을 표현하기 위해 Bool형이 존재한다.
C언어에선 정수나 포인터를 조건식 값으로 사용해서 '0 이외의 값은 참이다'라는 판단을 하지만, 스위프트에선 조건 판단 시에 Bool형 값을 이용해야 한다.
스위프트 문자열형인 String형은 NSString과 호환성을 가진 객체이지만, 값형으로 취급된다. 즉, 참조가 공유되지 않는다.
Character형은 문자열을 구성하는 유니코드(Unicode) 한 문자를 표현하는 형이다. 정수가 아니며 1Byte 데이터를 표현하는 형도 아니다.
# 정수와 상수
스위프트에선 인스턴스를 저장하는 변수가 두 가지 있는데, 값을 자유롭게 변경할수 있는 변수와 초기값을 설정한 후에는 변경할 수 없는 변수가 있다.
전자는 일반적으로 변수(variable)라고 부르며 후자는 상수(constant)라고 부른다.
상수라고 해도 C언어의 매크로처럼 컴파일 시에 확정되는 것이 아니고, 실행 시 정한 값을 이후에 변경할 수 없다는 제약이 있는 변수다. 이와 같은 성질을 단일 대입이라고 한다.
상수를 프로그래밍에 도입하면 첫째, 특정 식별자로 기술된 값이 계산 중에 변경되지 않는다는 것을 알고 있으면 프로그램을 읽기가 쉬워진다는 점이 있다. 또한, 값이 변경되지 않는다는 것을 알고 있으면, 컴파일러가 프로그램을 용이하게 해석할 수 있어서 빠르고 효율적인 실행 코드를 생성할 수 있다.
# 변수의 정의
Int형 변수를 age라는 이름으로 정의 하려면 아래와 같이 작성한다.
스위프트에선 형명을 식별자 뒤에 기술한다.
한 줄에 복수의 정의를 기술하는 경우가 아니라면 세미콜론 ';'이 필요 없다.
일반적으로 변수 선언은 다음과 같이 한다. (개요를 파악하기 위한 것으로 문법적으로 정확하지는 않다.)
옵션 부분은 생략 가능하다.
변수 정의 시에 형 지정과 초기값 지정이 가능하다.
초기값은 이유가 없다면 기술하는 것이 좋다.
형과 초기값 둘 다 지정하지 않으면 에러가 발생한다.
스위프트는 형 추론(type inference)를 하기 때문에 초기값을 지정할 때 형이 분명하다면 형명을 생략할 수 있다.
오히려 형 선언을 하지 않고 적극적으로 초기값을 설정하는 프로그래밍방식을 추천하고 있다.
# 상수 정의
# 변수와 형
# 문자열
# 연산자 종류
# 연산자 기술 시 주의 사항
# 식별자
# 형에 별칭 부여하기
# 형 파라미터
# 모듈 임포트
# 네임스페이스
# 주석
1