[Swift] 문법1 - 변수, 배열, 딕셔너리

LeeEunJae·2023년 3월 16일
0

iOS

목록 보기
2/14

📌 변수와 상수

변수 variable 은 변경 가능한 값, 상수 constant는 변경할 수 없습니다.
Swift 에서는 변수와 상수를 각각 var 와 let 키워드를 사용해서 선언합니다.

var a = 0
let b = 1

a = 10
b = 1 // error

b는 상수이므로 변경할 수 없는 값 입니다.

Swift 는 "정적 타이핑 언어" 입니다.
정적 타이핑 언어란 변수나 상수를 정의할 때 자료형 타입을 명시해줘야 하는 언어를 뜻 합니다.

var a : Int = 1
let name : String = "eun jae"
var isMale : Boolean = true

이렇게 보니 코틀린과 유사한 것 같네요
: String ,: Int 와 같은 것들을 타입 어노테이션 type annotation 이라고 한답니다.

Swift 에서는 자료형 타입을 굉장히 엄격하게 구분하기 때문에 다른 자료형 끼리는 연산조차 되지 않습니다.

var a : Int = 1
var b : Float = 1.2

print(a+b)

Int 타입인 a 와 Float 타입인 b와 +연산을 할 경우 Swift 에서는 컴파일 에러가 발생합니다.
다른 프로그래밍 언어일 경우에는 허용되는 경우가 많은데 Kotlin의 경우에도 그렇습니다.
하지만, Swift 에서는 자료형을 엄격하게 구분하기 때문에 연산시 자료형에 주의해야 합니다.

print(Float(a)+b)

다음과 같이 a를 Float 으로 타입 캐스팅을 한 후 연산을 함으로써 문제를 해결 할 수 있습니다.

var a : Int = 1
var b : Float = 1.2

print("a는 " + String(a) + " b는 " + String(b))

응용하면, 이렇게 숫자를 문자열로 사용할 수 있습니다 .

print("a는 \(a) b는 \(b)")

Swift에서는 이렇게도 쓸 수 있습니다.
Kotlin 에서는 ${값} 으로 표현했었는데 Swift에서는 이렇게 쓰이는군요..

📌 타입 추론

Swift는 Kotlin과 마찬가지로 타입 추론이 가능합니다.

var lastName: String = "Lee"
var firstName = "eun jae"

변수 lastName 과 firstName 은 둘 다 String 타입 입니다.
Swift 컴파일러가 ""의 텍스트로 정의된 변수를 보고, 아! 이 변수는 String 타입이구나! 하고 타입 추론을 하게 됩니다. 마찬가지로 숫자는 Int 로 타입 추론을 하게 되겠죠.
Java 와는 다르게 타입추론도 할 줄 알고,,, 꽤 똑똑한 것 같습니다... ㅋㅋㅋ

📌 배열과 딕셔너리

배열과 딕셔너리는 모두 대괄호 [ ] 로 정의할 수 있습니다.

var arr = ["apple", "mango", "water melon", "peach"]
var dict = ["apple" : "red", "banana": "yellow", "grape": "green", "peach": "pink"]

print(arr[1])
print(dict["apple"])

배열에 접근할 때는 [index] 딕셔너리는 [key] 로 접근 가능합니다.
여기서 arr의 자료형 타입은 [String] dict 의 자료형 타입은 [String : String] 입니다. 하지만, 우리 똑똑한 Swift는 타입 추론이 가능하기 때문에 생략할 수 있습니다.

근데 여기서 딕셔너리 값을 출력해보면 "Optional" 이라는게 출력됩니다 옵셔널에 대해서는 다음에 다뤄보도록 하겠습니다.

만약, 빈 배열이나 빈 딕셔너리를 선언하고 싶다면 다음과 같이 작성하면 됩니다.

var arr : [String] = []
var dict : [String: String] = [:]

좀 더 간결하게 한다면?

var arr = [String]()
var dict = [String: String]()
profile
매일 조금씩이라도 성장하자

0개의 댓글