Swift 상수, 변수

정승호·2022년 5월 26일
0

상수, 변수가 뭘까요?

사용자의 로그인 시도 횟수를 추적하기 위해
상수와 변수를 사용하는 방법을
예시로 들어보겠습니다.

let maximumNumberOfLoginAttempts = 10
var currentLoginAttempt = 0

위 코드에서
let 은 상수이고,
var 는 변수입니다.

정리 : let = 상수, var = 변수

아직 이해가 안갑니다.
조금 더 풀어보겠습니다.

let maximumNumberOfLoginAttempts = 10
상수       최대 로그인 시도 횟수  = 10
var currentLoginAttempt = 0
변수     현재 로그인 시도  = 0

상수 : 상수값은 한번 설정되면 변경할 수 없습니다.
허용되는 최대 로그인 시도 횟수는 10, 최대값이 변경되지 않습니다.
고로 상수(let)로 선언 합니다.

변수 : 나중에 다른 값으로 설정할 수 있습니다.
var로 적은 이유, 즉 변수로 선언한 이유는 로그인 시도가 실패할 때마다 증가해야 하기 때문입니다.

예시 2
기존 변수의 값을 호환 가능한 유형의 다른 값으로 변경할 수 있습니다.

var friendlyWelcome = "Hello!"
friendlyWelcome = "Bonjour!"
// friendlyWelcome is now "Bonjour!"
                           변경완료!

변수와 달리 상수 값은 설정 후에 변경할 수 없습니다.

let languageName = "Swift"
languageName = "Swift++"
// This is a compile-time error: languageName cannot be changed.
                          에러ㅜㅜ 

정리 : 변경할 수 없는 상수값, 다른 값으로 설정할 수 있는 변수

다른 특징에는
이렇게 쉼표로 구분하여 한 줄에 여러 상수 또는 변수를 선언할 수도 있습니다.

var x = 0.0, y = 0.0, z = 0.0
  • 코드에 저장된 값이 변경되지 않으면 항상 let 키워드를 사용하여 상수로 선언합니다.
  • 변경할 수 있어야 하는 값을 저장하는 경우에만 변수를 사용

다만 아래와 같이 쓴다면 컴파일러는 변수 또는 상수가 어떤 자료형인지 알 수 없습니다.

let name
var age
  • 변수 또는 상수를 선언할 땐 컴파일러가 알 수 있게 타입을 명시해 주어야 합니다.

자료형을 명시하는 방법에는 2가지가 있습니다.

  1. 타입 추론 (Type Inference)
let name = "Donkey"

위와 같이 선언과 동시에 초기화 를 해주는, 즉
컴파일러가 초기화된 값”Donkey”를 보고 타입을 추론하는 것

“Donkey”는 String값이니 컴파일러는 이 값을 String라고 추론, 타입을 지정합니다.

장점
간단합니다.

단점

  • 원하는 타입(자료형)으로 추론되지 않을 수 있습니다.
  • 타입 추론은 선언과 동시에 초기화를 진행하기 때문에 초기값이 없다면 타입을 유추 할 수 없습니다.
  • 컴파일러가 타입을 추론하는 과정에서 타입 어노테이션보다 시간이 조금 더 걸립니다.
  1. 타입 어노테이션 (Type Annotations)
var welcomeMessage: String

상수 또는 변수를 선언시 직접 자료형을 지정 합니다.

let/var 변수명: 자료형

장점

  • 타입 추론으로 원하는 자료형을 얻지 못할경우 사용가능 합니다.
  • 초기값이 없을 경우 사용가능 합니다.

타입 추론, 타입 어노테이션 비교

let num = 17.0
let num2: Float = 17.0

type(of: num)             Double.Type  
type(of: num2)            Float.Type 

타입 어노테이션으로 설정한 경우 Float을 얻을 수 있습니다
자료출처 https://babbab2.tistory.com/14

0개의 댓글