cozzin
코찐 기술 블로그
cozzin
전체 방문자
오늘
어제
  • 분류 전체보기
    • Kotlin
    • 백엔드
    • iOS
      • Swift
      • SwiftUI
      • Combine
      • Architecture
    • 개발환경
    • 세미나
    • 생각정리
    • 스터디
    • CS
      • Refactoring
      • OS

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • LinkedIn
  • 강의

공지사항

인기 글

태그

  • WWDC
  • SwiftUI
  • CS
  • Warning
  • Swift
  • ios
  • 리팩토링
  • 컴퓨터공학
  • XCode
  • Ribs
  • 워닝제거
  • os
  • WWDC21
  • 운영체제
  • slide-over
  • darkmode
  • multicast
  • Combine
  • 디자인패턴
  • 테스트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
cozzin

코찐 기술 블로그

[Swift 입문] 3. 변수와 상수
iOS/Swift

[Swift 입문] 3. 변수와 상수

2021. 1. 17. 20:53
반응형

안녕하세요. 코찐 입니다.

이제부터는 https://docs.swift.org/swift-book/ 를 기반으로 개념을 살펴보겠습니다.

Swift Language Guide 인데요. 애플에서 공식 가이드로 작성한 것이라서 군더더기 없는 설명을 자랑합니다.

입문자가 전체를 살펴보기에는 내용이 많아서, 핵심만 추려서 살펴보겠습니다.

 

이번 글에서는 변수와 상수에 대해 알아보겠습니다.

데이터를 표현할 때 사용됩니다.


변수는 var로 지정합니다. 나중에 변경 가능한 값 입니다.
상수는 let으로 지정합니다. 한번 지정하면 변경되지 않습니다.

 

첫번째 예: 횟수 제한이 있는 로그인 화면

로그인 화면을 만들 때, 재시도 가능 횟수가 정해진 경우가 많습니다.
그럴 때 변수와 상수를 이렇게 사용할 수 있습니다.

let maximumNumberOfLoginAttempts = 10
var currentLoginAttempt = 0

위의 코드를 읽어보겠습니다.
"새로운 상수(변하지 않는 값)를 선언하고 maximumNumberOfLoginAttempts라고 부르겠다. 이 상수의 값은 영원히 10이다.
그리고, 새로운 변수(변할 수 있는 값)을 선언하고 currentLoginAttempt라고 부르겠다. 여기에 초기값으로 0을 할당한다."

이렇게 만들어두고 로그인을 시도할 때마다 currentLoginAttempt의 값을 1씩 늘려나가면 되겠죠.
그리고 maximumNumberOfLoginAttempts에 도달하면, 더 이상 로그인 시도를 못하도록 만들면 되겠습니다.

 

두번째 예: 코스피 주식

이번에는 주식 시장을 한번 예로 들어보겠습니다.
코스피 지수가 있는데요. 이름은 KOSPI, 현재 주가는 3120 입니다.
주가는 계속 변하기 때문에 변수로 선언했습니다.

참고로 이렇게 '//' 다음에 필요한 설명을 추가하는 것을 주석(Comment)이라고 합니다.

let name = "KOSPI"
var price = 3120

price = 3200 // (1) 변경 가능
print(price) // 3200

name = "KOSDAQ" // (2) [컴파일 오류] 변경 불가능
price = "3200" // (3) [컴파일 오류] 변경 불가능

(1)에서는 주가를 3200으로 변경했습니다. 변수니까 당연히 변경가능하겠죠?

(2)에서는 이름을 코스닥으로 변경하려고 했지만, 컴파일 오류가 발생합니다.

변하지 않는 값인 상수를 변경하려고 했기 때문에 컴파일러가 오류를 보여줍니다.

 

컴파일 오류

컴파일러는 스위프트 같은 사람이 이해하는 프로그래밍 언어를 기계가 이해하는 언어로 변환하는 작업을 해줍니다.

스위프트는 앱이 설치되기 전에 미리 컴파일러를 통해서 기계어로 번역을 해줍니다.

상수는 값을 변경하지 않는 것으로 약속했기 때문에, 컴파일러가 컴파일 에러를 발생시킵니다.

에러를 만나면 당황스러울 때도 있습니다. 하지만 에러를 힌트삼아 잘못된 코드를 수정할 수 있기 때문에 유용합니다.

 

(3)에서도 컴파일 오류가 발생합니다. 이건 뭘까요???

price는 변수인데 이번에는 값을 변경하지 못했습니다.

여기서 정적 타입 이라는 개념이 등장합니다.

정적 타입

정적 타입은 Swift 언어의 특징입니다. 한번 타입이 결정되면 변경되지 않는 것인데요.

우리가 타입을 지정한적 없는데, 타입은 어떻게 결정 되었을까요?

컴파일러가 알아서 무슨 타입인지 추론해서 사용했기 때문입니다.

이번에는 명시적으로 타입을 지정해보겠습니다.

let name: String = "KOSPI"
var price: Int = 3120

price는 Int 타입이기 때문에 "3200" 같은 String 으로는 값을 변경하지 못하는 것 입니다.

불편하다고 생각될 수 있지만 타입이 고정되어 있기 때문에 보다 안전한 프로그래밍이 가능합니다.

 

다음 포스팅에서는 이번 시간에 다루지 못했던 Swift의 기본 데이터 타입에 대해 알아보겠습니다.

그럼 또 만나요!

반응형
저작자표시 (새창열림)

'iOS > Swift' 카테고리의 다른 글

[WWDC21] What's new in Swift  (0) 2021.07.10
[WWDC21] Detect and diagnose memory issues  (0) 2021.07.07
[WWDC21] ARC in Swift: Basics and beyond  (0) 2021.07.04
[Swift 입문] 2. Playground 사용해보기  (0) 2021.01.17
[Swift 입문] 1. 우리가 Swift를 배워야하는 이유  (0) 2021.01.17
    'iOS/Swift' 카테고리의 다른 글
    • [WWDC21] Detect and diagnose memory issues
    • [WWDC21] ARC in Swift: Basics and beyond
    • [Swift 입문] 2. Playground 사용해보기
    • [Swift 입문] 1. 우리가 Swift를 배워야하는 이유
    cozzin
    cozzin
    Software Engineer

    티스토리툴바