본문 바로가기

프로그래밍/Swift

[Swift] 변수 선언

728x90
반응형

Swift로 벌어먹으며 살고 있는데 stackoverflow에서 거의 모든 궁금증을 해결하다 보니 공식 문서를 본적이 없다. 근데 점점 기초가 중요하다고 느껴지는 시점이기도 하고, 모르는 무언가가 있지 않을까 하는 궁금증에 The Swift Programming Language라는 Books용 도서를 다운받아 봤다.

 

쭉 훑어보니 그냥 당연히 생각했던 부분들을 엄청 자세히 설명해놨다. 역시 이론보단 실전을 추구하는 나에겐 이런 긴 설명을 하나하나 읽어보는것은 머리아픈 일이지만, 그래도 코딩실력을 한단계 업그레이드 하려면 기초 이론에 충실해야 한다는 생각이 들어서 하나하나 살펴보기로 했다. 아래부터는 핵심 내용들에 대한 블로그필기.

 


 

print()를 통해 입력된 값을 화면에 출력할 수 있다.

print("Hello, world!") // Hello, world!

 

상수는 let으로, 변수는 var로 선언할 수 있다. let으로 선언된 상수의 값은 변경할 수 없다.

let myConstant = "myConstant"
var myVariable = "myVariable"
myConstant = "newValue" // error
myVariable = "newValue"

 

Cannot assign to value
Change 'let' to 'var' to make it mutable

 

 

상수와 변수에 값을 할당한 이후엔 값의 유형을 변경할 수 없다. 다만, 값의 유형을 항상 명시해 줄 필요는 없다. 제공 된 값을 컴파일러가 유추해 유형을 결정할 수 있다. 정수와 실수는 값에 콜론을 통해 구분될 수 있다.

let implicitInt = 10 // 암시적 정수(integer)
let implicitDouble = 10.0 // 암시적 실수(double)
let explicitDouble: Double = 10 // 명시적 실수(double)

 

만약 값의 유형을 다른 유형으로 변환하고자 한다면 아래와 같이 명시적으로 작성할 수 있다.

let intValue = 10
let strValue = String(intValue) // Integer -> String

 

명시적 변환 대신 소괄호와 백슬래시를 통해 String 타입으로 변환할 수도 있다. 백슬래시+소괄호 내부에선 수의 연산이 이루어진다.

let numberOfBrothers = 1
let numberOfSisters = 2
let familySummary = "나는 \(numberOfBrothers + numberOfSisters)명의 형제가 있다."

 

여러줄의 String을 만들고자 한다면 세개의 큰 따옴표(""")를 문장 앞뒤에 붙여준다.

let quotation = """
나는 "\(numberOfBrothers)명의 남자형제가 있다."고 말했다.
그리고 "\(numberOfSisters)명의 여자형제가 있다."고 말했다.
"""

 

배열이나 딕셔너리는 대괄호([])를 통해 만들고 인덱스 값이나 키값으로 엘리멘트에 접근할 수 있다.

// 배열
var studentList = ["민수", "영희", "수민"]
print(studentList[1]) // 영희

studentList[1] = "태희" // 새로운 값 대체
print(studentList[1]) // 태희

studentList.append("동희") // 새로운 값 추가
print(studentList[3]) // 동희



// 딕셔너리
var studentDict = [
    "민수": "1학년",
    "영희": "2학년",
    "수민": "3학년",
]
print(studentDict["수민"]) // 3학년

studentDict["태희"] = "4학년" // 새로운 키와 값
print(studentDict["태희"]) // 4학년

 

초기화 구분으로 빈 배열이나 딕셔너리를 만들 수 있다.

만약 값의 유형을 알고 있다면 []로 빈 배열과 [:]로 빈 딕셔너리를 새 변수의 설정이나 함수의 인자에 사용할 수 있다.

var emptyArray = [String]()
var emptyDict = [String: Double]()

emptyArray = []
emptyDict = [:]

 

참고: Apple Inc. “The Swift Programming Language (Swift 5.3)”. Apple Books. https://books.apple.com/hk/book/the-swift-programming-language-swift-5-4/id881256329?l=en

반응형