안녕하세요 rOar입니다.
첫 Swift문법 포스팅인 만큼 가벼운 주제로 시작해볼까 합니다.
1. 변수(Variables)와 상수(Constants)
2. Swift의 데이터 타입(Data Types)
우선 변수와 상수에 대해 알아보겠습니다.
프로그램이 동작하기 위해서는 첫번째로 메모리에 값(데이터)을 저장해야 합니다.
변수와 상수는 값(데이터)을 담을 수 있는 공간 이라고 간단하게 생각해주시면 될 것 같습니다.
변수(Variables)란?
값의 변경이 가능한(mutable) 데이터 공간 입니다.
변수를 선언시에는 아래와 같이 var 변수명 = 값
의 형태로 선언을 해주어야 합니다.
아래는 name이라는 공간에 "홍길동"이라는 값을 저장 후
name의 값을 "스티브"로 바꾸어 주었습니다.
이와 같이 변수는 값의 변경이 가능한 데이터 공간 입니다.

상수(Constants)란?
값의 변경이 불가능한(immutable) 데이터 공간 입니다.
상수를 선언시에는 아래와 같이 let 변수명 = 값
의 형태로 선언을 해주며, 아래와 같은 방식으로 값을 변경하면 에러가 나게됩니다.

💡변수와 상수를 선언시 이름은 식별자가 되므로 한 영역에 유일한 하나의 이름만 사용해야 합니다.
변수의 이름은 소문자로 시작하며, 숫자를 첫글자로 시작하는것은 금지입니다.
이어서 Swift의 데이터 타입(Data Types)에 대해 알아보겠습니다.
Swift의 데이터 타입
Swift의 데이터 타입으로는
1. Int : 정수
2. Float : 실수(부동소수점) 6자리 소수점
3. Double : 실수(부동소수점) 15자리 소수점
4. Character : 문자(글자 한개)
5. String : 문자열
6. Bool : 참과 거짓
등이 있겠습니다.
⭐️ Swift의 모든 타입 키워드는 대문자로 시작합니다.
타입이 왜 필요할까?
- 데이터를 얼마 만큼의 크기, 어떤 형태로 저장할 것인지에 대한 약속이 필요합니다.

위와 같이 "홍길동"은 문자열 이므로 변수명 다음으로 String타입이 함께 선언되어 있는것을 보실 수 있습니다.
이를 타입 어노테이션(Type Annotation)혹은 타입 주석 이라고도 표현합니다.
그럼 이쯤에서 궁금증이 생기시는 분들이 계실 수 있습니다.
"어? 위에서는 타입을 선언하지 않고도 "홍길동"을 선언했는데, 굳이 타입을 선언 할 필요가 있나요?"
맞습니다. 굳이 타입을 선언하지 않더라도 초기값을 설정해주게 되면 에러가 나지 않는데요.
타입을 선언하지 않더라도 초기값을 "홍길동" 혹은 25와 같이 지정해주게 되면
똑똑한 컴파일러가 이 공간에는 String타입이 들어올거야 혹은 Int타입이 들올거야 하고 알게됩니다.
이를 타입 추론(Type Inference)이라고 부릅니다.
정리하자면 변수를 선언하면서, 타입도 명확하게 지정하는 방식은 타입 어노테이션
타입을 지정하지 않고, 컴파일러가 유추하는 방식을 타입 추론 이라고 합니다.
또한 Swift에서는 데이터 타입을 명확하게 구분하여 사용합니다.

이제 위의 코드를 보시면 아실 수 있을건데요.!
num과 num1 상수에 5와 2.5를 저장하였습니다.
그럼 num과 num1의 각각의 타입은 어떻게 될까요?
이는 타입추론으로 인해 각각 Int와 Double로 저장되어 있습니다.
그런데 아래에서 result라는 상수에 num + num1을 하였습니다.
사람이라면 바로 7.5라고 알 수 있겠지만, Swift에서는 에러가 나게됩니다.
이와 같이 데이터 타입을 명확하게 구분하여 사용하는 특징을 타입 안정성(Type Safety)이라고 합니다.
마지막으로 Swift에서는 타입을 변환하여 사용할 수 있습니다.

상수 str에 "123"문자열을 저장하였습니다.
그리고 상수 num에 Int(str)을 저장하였는데요.
위와 같이 문자열 "123"은 정수 123으로 타입을 바꿔서 사용이 가능하지만,
"헬로우"는 정수로 표현을 할 수 없죠.
때문에 nil이라는 값이 없음을 나타내주는 키워드로 표현됩니다.
이와같은 방법을 타입 변환(Type Conversion)이라고 표현합니다.
오늘은 첫 문법 포스팅인만큼 가벼운 주제로 해보았는데요.
이제 막 시작하시는 분들에게는 개념을 정리하는 부분에 있어서 도움이 될 거라고 생각하며,
포스팅을 마치겠습니다.! 감사합니다.🙂
'iOS > Swift' 카테고리의 다른 글
| 클로저(Closure) 이름없는 무서운녀석. (0) | 2022.08.09 |
|---|---|
| 클래스(Class)와 구조체(Struct) (0) | 2022.08.02 |
| 열거형(Enumeration)에 대해 알아보자! (0) | 2022.08.02 |
| 저장 타입 속성(Stored Type Properties)에 대해 알아보기!! (0) | 2022.07.21 |
| Swift Collection에 대해 알아보자!! (0) | 2022.07.12 |