Swift의 문법을 책(핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍)을 통해 공부하면서 내용들을 정리하려 합니다.
iOS 8 이전에는 Objective-C가 iOS 애플리케이션 개발을 위한 프로그래밍 언어였지만 애플이 iOS 8을 발표하면서 Objective-C를 대신할 언어로 Swift 프로그래밍 언어를 발표하였다.
Swift는 더 쉽고 빠르게 프로그래밍 할 수 있으며, 프로그래머의 오류를 줄여주기 위해 설계된 비교적 새로운 프로그래밍 언어다.
iOS, macOS, watchOS 그리고 tvOS용 애플리케이션 개발에 사용되는 스위프트는 기존 언어에 뿌리를 둔 Objective-C와는 다르다.
스위프트 데이터 타입
모든 프로그램의 기본 중의 하나가 데이터이며, 스위프트와 같은 프로그래밍 언어는 데이터 타입을 정의한다. 데이터 타입은 프로그래밍할 때 우리가 이해할 수 있는 형태로 데이터를 처리할 수 있게 해준다.
(ex) 정수, 실수, 문자열 등등
정수형 데이터 타입
스위프트의 정수형 데이터 타입은 정수를 저장한다.
정수에는 양수, 음수, 0 값을 저장할 수 있으며, 부호 여부에 따라 signed(부호있는), unsigned(부호없는)으로 저장할 수 있다.
또한, 스위프트는 8,16,32,64비트 정수를 지원하며, 각각의 데이터 타입은 Int8, Int16... 부호없는 것은 UInt8, UInt16...으로 사용 가능하다.
일반적으로 애플은 특정 크기의 데이터 타입을 사용하기 보다는 Int 데이터 타입을 사용하라고 권장한다.
(Int 데이터 타입 선언 시 실행되는 플랫폼에 맞는 정수 크기를 사용하게 해준다.)
실수형 데이터 타입
스위프트는 실수형 데이터 타입은 소수점이 있는 값을 저장할 수 있는 데이터 타입이다.
(ex) 1234.5123은 실수형 데이터 타입으로 저장된다.
스위프트는 두 가지 실수형 데이터 타입을 제공한다. 하나는 Float, 또 하나는 Double이다.
두 데이터 타입의 차이점은 소수점 이하의 값을 얼마나 정확하게 표현하느냐에 따라 다르며, Double는 최대 64비트(약 소수점 이하 15자리), Float은 최대 32비트(약 소수점 이하 6자리)를 표현할 수 있다.
불리언 데이터 타임
스위프트는 참/거짓(0 or 1, True or False)을 처리하는 데이터 타입이 있다.
불리언(Boolean) 데이터 타입을 가지고 작업하기 위해 상수값으로 true, false를 제공한다.
문자 데이터 타입
스위프트는 문자 데이터 타입은 문자, 숫자 문장 부호, 기호와 같은 하나의 문자를 저장하는데 사용된다.
스위프트에서 문자는 내부적으로 그래핌 클러스터(grapheme cluster)의 형태로 저장된다.
그래핌 클러스터는 눈에 보이는 하나의 문자를 표현하기 위해 결합된 둘 이상의 유니코드 스칼라로 구성된다.
유니코드 스칼라 : Swift의 네이티브 문자열 타입은 유니코드 스칼라 값으로 만들어졌다. 하나의 유니코드는 고유한 21비트 숫자로 구성돼 있다. 예를 들면 U+0061는 라틴어의 소문자 a를 나타내고 U+1F425는 정면의 병아리 🐥 를 나타낸다.
모든 21비트 유니코드 스칼라가 문자로 할당되는 것은 아니다(미래에 UTF-16 인코딩으로 사용하기 위해 예약되기도 한다). 문자에 할당된 스칼라 값은 일반적으로 이름을 가진다.
문자열 데이터 타입
문자열 데이터 타입은 일반적으로 단어나 문장을 구성하는 일련의 문자들이다.
스위프트에서 문자열은 내부적으로 문자들의 집합으로 표시되며, 여기서 문자는 앞에 설명한 것처럼 하나 이상의 유니코드 스칼라 값이다.
또한, 문자열은 문자열 보간이라는 개념을 이용하여 변수, 상수, 표현식, 함수 호출을 조합하여 구성할 수도 있다.
var name = "Woosk"
var count = 12
let maxCount = 100
var message = "\(name) has \(count) messages. Message capacity remaining is
\(maxCount - count) messages."
print(message)
이를 출력 시
Woosk has 12 messages. Message capacity remaining is 88 messages.
가 출력된다.
특수 문자/이스케이프 시퀀스
위에서 설명한 표준 문자들뿐만 아니라 개행, 탭 또는 문자열 내에 특정 유니코드 값을 지정하는 이스케이프 시퀀스(escape sequence)라는 특수 문자도 있다. 이러한 특수 문자들은 역슬래시 \ 문자를 앞에 써서 구별 한다. 이것을 이스케이핑(escaping)이라고 한다.
var newline = "\n"
var backslach = "\\"
이러한 식으로 변수에 개행 문자, 역슬래시 자체를 할당한 것이다.
주로 사용되는 특수 문자는
\n = 개행
\r = 캐리지 리턴
\t = 탭
\\ = 역슬래시
\" = 쌍따옴표
\' = 따옴표
가 있다.
스위프트 변수
변수는 애플리케이션이 사용하는 데이터를 저장하기 위해 예약된 컴퓨터 메모리 내의 위치다. 각각의 변수는 프로그래머에 의해 이름이 주어지고 값이 할당된다. 변수에 할당된 이름은 변수에 할당된 값을 스위프트 코드 내에서 접근하기 위해 사용된다. 물론, 변수에 할당된 값을 변경할 수도 있다.
스위프트 상수
상수도 변수처럼 데이터 값을 저장하기 위해 메모리 내의 위치에 이름을 명명한다.
큰 차이점은 값이 한번 할당되면 나중에 그 값을 바꾸지 못한다는 점이다.
변수와 상수는 데이터 타입과 이름, 그리고 값을 갖지만, 상수에 한번 할당된 값은 프로그램 실행 중에 바꿀 수 없다는 점이 다르다.
상수와 변수 선언하기
변수는 var 키워드를 사용하여 선언하며, 변수를 생성할 때 값으로 초기화할 수 있다. 만약 어떤 변수가 초깃값 없이 선언되었다면, 후에 설명할 옵셔널(Optional)로 선언된 것으로 간주한다.
var count = 10 //변수
let maxCount = 100 // 상수
변수는 var을 사용하여 선언하고, 상수는 let을 사용하여 선언한다.
애플은 코드의 효율성과 실행 성능의 향상을 위해서 가능하면 변수보다 상수를 사용하라고 권장하고 있다.
출처 : 핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍
'iOS > Swift 문법' 카테고리의 다른 글
[Swift 문법] 제어 흐름, 반복문과 조건문 (0) | 2021.12.24 |
---|---|
[Swift 문법] 연산자와 표현식 (0) | 2021.12.23 |
[Swift 문법] 타입 캐스팅과 타입 검사 (0) | 2021.12.22 |
[Swift 문법] 옵셔널 타입 (0) | 2021.12.21 |
[Swift 문법] 타입 선언과 타입 추론, 튜플 (0) | 2021.12.21 |