[Swift] 변수와 상수

2024. 10. 8. 13:17·iOS/Swift

변수와 상수

변수(variable)는 값을 수정할 수 있고 상수(constant)는 값을 수정할 수 없기 때문에 Swift에서는 안전하게 상수를 사용하는 것을 권장하고 있다. 변수는 var로 선언하고, 상수는 let으로 선언한다.

var name = "Soo"
let birthYear = 2024

 

var로 선언한 name은 이름을 바꾸고 싶을 때 바꿀 수 있지만, 태어난 해를 바꾸려고 할 땐 컴파일 에러가 발생한다.

name = "Sooo"
birthYear = 2023  // Compile Error!
Cannot assign to value: 'birthYear' is a 'let' constant

 

 

let 키워드로 선언된 상수의 값을 변경할 수 없다는 에러이므로 바뀌면 안 되는 값은 상수로 정의해두자.

 

 

Swift는 변수나 상수를 정의할 때 그 자료형이 어떤 타입인지 명시해주어야 하는 정적 타이핑 언어이다.

var name: String = "Soo"
let birthYear: Int = 2024
var height: Float = 50.7

 

변수 또는 상수 이름 뒤에 콜론( : )을 붙이고 자료형을 써주면 되는데, : String과 : Int 등을 가지고 타입 어노테이션(Type Annotation)이라 한다.

 

Swift는 타입을 엄격히 다루기 때문에 다른 자료형끼리는 기본적인 연산조차 되지 않는다. 아래와 같이 Int타입과 Float 타입을 더하려고 하면 컴파일 에러가 발생한다.

birthYear + height  // Compile Error!
Binary operator '+' cannot be applied to operands of type 'Int' and 'Float'

 

이런 경우 아래와 같이 명확하게 사용해야 한다.

Float(birthYear) + height  // 2074.7

String(birthYear) + "년에 태어난 " + name + "입니다!"   // 2024년에 태어난 Soo입니다!
"\(birthYear)년에 태어난 \(name)입니다!"  // 2024년에 태어난 Soo입니다!

 

 

 

타입 추론(Type Inference)

Swift 컴파일러는 큰 따옴표( " )로 감싸진 텍스트는 String 타입인 것을 알고, 숫자는 Int 타입인 것을 인식한다. 타입을 직접 명시하지 않고도 값을 가지고 정적 타이핑을 할 수 있게 해주는 것을 타입 추론(Type Inference)라고 한다.

 

 

 

배열(Array)과 딕셔너리(Dictionary)

배열과 딕셔너리는 모두 대괄호( [ ] )를 이용해서 정의할 수 있다. 

var languages = ["Swift", "Java", "Objective-C"]
var capitals = [
    "한국": "서울",
    "일본": "도쿄",
    "중국": "베이징"
]

 

배열과 딕셔너리에 접근하거나 값을 변경할 때도 대괄호를 사용한다.

languages[0]  // Swift
languages[1] = "Python"

capitals["한국"]  // 서울
capitals["프랑스"]  = "파리"

 

배열과 딕셔너리도 let으로 정의한다면 값을 추가/수정/삭제 할 수 없다.

 

배열과 딕셔너리는 대괄호 안에 어떤 타입을 받을 것인지 명시한다.

var languages: [String] = ["Swift", "Java", "Objective-C"]
var capitals: [String: String] = [
    "한국": "서울",
    "일본": "도쿄",
    "중국": "베이징"
]

 

빈 배열이나 빈 딕셔너리 또한 대괄호를 사용해 타입을 명시한다.

var languages: [String] = []
var capitals: [String: String] = [:]

 

빈 배열로 선언하는 것을 조금 더 간결하게 하고자 한다면 아래와 같이 사용한다.

var languages = [String]()
var capitals = [String: String]()

 

타입 뒤에 괄호()를 쓰는 것은 생성자(initializer)를 호출하는 것이다.

 

 

 


🐣 출처: 전수열님 GitBook

 

이 글은 전수열님의 깃북을 참고하여 작성한 글입니다.

 

저작자표시 비영리 변경금지
'iOS/Swift' 카테고리의 다른 글
  • [Swift] 함수와 클로저
  • [Swift] 옵셔널(Optional)
  • [Swift] 조건문과 반복문
뚜비
뚜비
1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
  • 뚜비
    뚜비의 개발로그
    뚜비
  • 전체
    오늘
    어제
  • 글쓰기     관리
    • Devlog
      • Back-End
        • Java
        • Spring
        • JPA
        • HTTP
        • Security
        • Back-End
        • Front-End
      • 알고리즘
      • iOS
        • Swift
      • Database
      • Tips
        • Git & GitHub
        • A to Z
      • 프로젝트
      • 생각정리
  • 태그

    JPA
    스프링
    HTTP
    Security
    변수
    spring
    Swift
    객체
    자바스크립트
    javascript
    jsp
    Java
    의존성주입
    프로그래머스
    게시판만들기
    성능최적화
    html
    자바
    최주호
    DB
    김영한
    Database
    Spring Security
    MVC
    알고리즘
    생성자
    데이터베이스
    다형성
    백준
    sql
  • hELLO· Designed By정상우.v4.10.0
뚜비
[Swift] 변수와 상수
상단으로

티스토리툴바