레이블이 Swift Course인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Swift Course인 게시물을 표시합니다. 모든 게시물 표시

2025/07/23

21. Swift 표준 라이브러리 깊이 보기: 유용한 타입과 함수 활용

안녕하세요! 이번 블로그에서는 우리가 매일 사용하는 Swift 코드의 숨은 영웅인 Swift 표준 라이브러리(Swift Standard Library)를 정리해 보겠습니다. 📚

Swift 표준 라이브러리는 우리가 Int, String, Array, Dictionary와 같은 기본 데이터 타입과 print(), map(), filter()와 같은 함수들을 사용할 수 있게 해주는 Swift 언어의 핵심 부분입니다. 이 라이브러리는 Swift 언어와 함께 자동으로 제공되며, 기본적인 데이터 구조와 알고리즘, 그리고 여러 유틸리티 기능들을 포함하고 있습니다.

표준 라이브러리의 다양한 기능을 이해하고 활용하는 것은 더 효율적이고, 안전하며, 관용적인(idiomatic) Swift 코드를 작성하는 데 필수적입니다. 오늘은 자주 사용되는 중요한 타입과 함수들을 중심으로 그 활용법을 자세히 살펴보겠습니다.

20. Swift Concurrency: async/await와 Actor로 비동기 코드 간결하게 작성하기 (Swift 5.5+)

20. Swift Concurrency: async/await와 Actor로 비동기 코드 간결하게 작성하기 (Swift 5.5+)
안녕하세요! 이번 블로그에서는 Swift 5.5부터 공식 도입된, 비동기 코드를 훨씬 더 간결하고 안전하며 읽기 쉽게 만들어주는 혁신적인 기능들인 async/awaitActor에 대해 자세하게 설명하겠습니다. 🚀

오랫동안 Swift에서의 비동기 코드는 클로저 기반의 콜백(Callback) 패턴으로 인해 "콜백 지옥(Callback Hell)"이라고 불리는 복잡한 중첩 구조와 순환 참조 문제로 개발자들을 괴롭혀왔습니다. 하지만 Apple은 Swift 5.5부터 새로운 구조화된 동시성(Structured Concurrency) 모델을 도입하여 이러한 문제들을 근본적으로 해결하고, 멀티스레딩 환경에서 발생할 수 있는 데이터 경쟁(Data Race) 문제까지 효과적으로 방지할 수 있는 해법을 제시했습니다.

이번 블로그를 통해 Swift의 현대적인 비동기 프로그래밍 패러다임을 완전히 이해하고 여러분의 앱을 더욱 강력하게 만들어 보세요!

19. Swift 비동기 프로그래밍: Grand Central Dispatch (GCD)와 OperationQueue

 안녕하세요! 이번 블로그에서는 Swift 앱의 반응성을 유지하고 효율적으로 작업을 처리하는 데 필수적인 비동기 프로그래밍에 대해 정리해 보겠습니다. 특히, Swift의 새로운 async/await 모델 이전에 iOS/macOS 개발에서 오랫동안 사용되어 온 두 가지 핵심 비동기 처리 프레임워크인 Grand Central Dispatch (GCD)와 OperationQueue에 초점을 맞춰보겠습니다. 🚀

현대의 앱은 사용자 인터페이스가 멈추지 않고 부드럽게 작동하면서도, 동시에 네트워크 통신, 파일 입출력, 복잡한 계산 등 시간이 오래 걸리는 작업을 처리해야 합니다. 이러한 작업들을 메인 스레드(UI 스레드)에서 직접 실행하면 앱이 멈추거나 '버벅이는' 현상이 발생하여 사용자 경험을 심각하게 저해합니다. 비동기 프로그래밍은 이처럼 시간을 소모하는 작업을 백그라운드 스레드에서 실행하고, 작업이 완료되면 메인 스레드에 결과를 알려 UI를 업데이트하는 방식으로 앱의 반응성을 유지하는 기법입니다.

Swift 5.5부터 async/await가 도입되어 비동기 코드를 훨씬 간결하게 작성할 수 있게 되었지만, 여전히 많은 기존 코드베이스에서 GCD와 OperationQueue가 활발하게 사용되고 있으며, 이 두 기술은 async/await의 저수준 기반이 되기도 합니다.

2025/07/22

18. Swift 고급 패턴 매칭: 복잡한 데이터 구조 효과적으로 다루기

안녕하세요! 이번 블로그에서는 Swift의 문법적 유연성을 더해주는 강력한 도구인 패턴 매칭(Pattern Matching)에 대해서 정리해 보겠습니다. 특히, 복잡한 데이터 구조를 효과적으로 분석하고 처리하는 고급 패턴 매칭 기법들을 중심으로 살펴보겠습니다. 🧩

여러분은 이미 Swift에서 패턴 매칭을 많이 사용해왔을 겁니다. 예를 들어 if let으로 옵셔널 바인딩을 하거나, switch 문에서 특정 값을 비교하는 것이 모두 패턴 매칭의 일종입니다. 하지만 Swift의 패턴 매칭은 단순한 값 비교를 넘어, 복잡한 데이터 구조의 형태를 분석하고, 그 안의 값을 추출하며, 특정 조건을 만족하는 경우에만 코드를 실행할 수 있는 매우 정교한 기능을 제공합니다. 이를 통해 코드를 더욱 간결하고 표현력이 풍부하게 만들 수 있습니다.


17. Swift ARC(Automatic Reference Counting): 메모리 관리의 이해

 안녕하세요. 오늘은 우리가 작성하는 Swift 앱이 효율적으로 동작하고 메모리 누수 없이 안정적으로 실행되도록 돕는 핵심 메커니즘인 ARC(Automatic Reference Counting)에 대해 정리해 보겠습니다. 🧠

메모리 관리는 모든 프로그래밍 언어에서 중요한 부분입니다. 특히, iOS 앱은 제한된 디바이스 자원을 사용하기 때문에 메모리를 효율적으로 사용하는 것이 매우 중요합니다. Swift는 C나 C++처럼 개발자가 직접 메모리를 할당하고 해제할 필요 없이, ARC라는 시스템을 통해 자동으로 메모리를 관리해 줍니다. 덕분에 우리는 메모리 관리에 대한 부담을 덜고 앱의 기능 구현에 더 집중할 수 있지만, ARC의 기본 원리를 이해하는 것은 여전히 중요합니다. 특히 순환 참조(Retain Cycle)와 같은 특정 문제 상황을 방지하기 위해서 말이죠.

2025/07/21

16. Swift 클로저 심층 분석: 캡처 리스트와 순환 참조 문제 해결

안녕하세요! 지난 블로그에서는 Swift 코드를 유연하고 재사용 가능하게 만드는 제네릭에 대해 알아보았습니다. 오늘은 Swift의 함수형 프로그래밍 요소를 대표하며, 강력하지만 동시에 조심해서 다뤄야 하는 도구인 클로저(Closures)에 대해 심층적으로 분석해 보겠습니다. 특히, 클로저가 외부 값을 '캡처'하는 방식과 이로 인해 발생할 수 있는 순환 참조(Retain Cycle) 문제를 해결하는 방법에 집중하겠습니다. 🕵️‍♀️

클로저는 코드 블록을 변수처럼 전달하고 저장할 수 있게 해주는 Swift의 핵심 기능입니다. 비동기 작업, 애니메이션, UI 이벤트 처리 등 다양한 곳에서 클로저를 사용하지만, 그 내부 동작, 특히 외부 변수를 '캡처'하는 메커니즘을 제대로 이해하지 못하면 메모리 누수로 이어지는 순환 참조라는 함정에 빠질 수 있습니다.

15. Swift 제네릭(Generics): 유연하고 재사용 가능한 코드 작성하기

안녕하세요! 오늘은 Swift의 강력한 타입 시스템을 한 단계 더 끌어올려, 여러분의 코드를 더욱 유연하고 재사용 가능하게 만들어 줄 제네릭(Generics)에 대해서 정리해 보겠습니다. 💡

프로그래밍을 하다 보면 다양한 타입에 대해 동일한 기능을 수행해야 하는 경우가 많습니다. 예를 들어, 두 값을 교환하는 함수를 만든다고 생각해봅시다. Int 타입 두 개를 교환하는 함수, String 타입 두 개를 교환하는 함수... 이렇게 매번 타입별로 함수를 따로 만들어야 한다면 코드가 매우 길어지고 비효율적이겠죠? 제네릭은 이러한 문제점을 해결하여, 어떤 특정 타입에도 얽매이지 않고 유연하게 동작하면서도, 컴파일 시점에 타입 안전성을 보장하는 코드를 작성할 수 있게 해줍니다.

14. Swift 익스텐션(Extension): 기존 타입에 새로운 기능 추가하기

안녕하세요! 오늘은 Swift의 또 다른 강력한 기능으로, 이미 존재하는 타입에 새로운 숨겨진 능력을 부여하는 마법과 같은 도구인 익스텐션(Extension)에 대해 알아 보겠습니다. ✨

개발을 하다 보면 기존에 정의된 클래스, 구조체, 열거형, 또는 심지어 기본 타입(Int, String 등)에 새로운 기능을 추가하고 싶을 때가 있습니다. 하지만 원본 소스 코드를 수정할 수 없거나, 수정하는 것이 바람직하지 않은 경우가 많죠. 이럴 때 익스텐션이 빛을 발합니다. 익스텐션은 기존 타입의 기능을 확장하여, 마치 원래부터 그 타입에 있었던 것처럼 사용할 수 있게 해주는 아주 유용한 방법입니다.


2025/07/20

13. Swift 동시성(Concurrency): 비동기 작업을 효율적으로 처리하는 방법

 안녕하세요! 지난 블로그에서는 앱의 안정성을 높이는 오류 처리에 대해 자세히 알아보았죠. 오늘은 앱 개발에서 사용자 경험을 크게 좌우하는 중요한 개념, 바로 동시성(Concurrency)에 대해 정리해 보겠습니다.

앱을 사용하다 보면 네트워크에서 데이터를 가져오거나, 복잡한 계산을 수행하거나, 큰 파일을 처리하는 등 시간이 오래 걸리는 작업들이 있습니다. 이런 작업들을 메인 스레드(UI를 담당하는 스레드)에서 직접 처리하게 되면, 앱이 멈추거나 '버벅이는' 현상이 발생하여 사용자 경험을 해치게 됩니다. 동시성은 이러한 시간을 많이 소모하는 작업을 메인 스레드와 별도의 스레드(혹은 태스크)에서 비동기적으로 실행하여, 앱의 사용자 인터페이스가 계속 반응하도록 유지하는 기법입니다. 리스트 항목에서 이미지를 로딩하는데, 하나씩 로딩하면 리스트 보여주는데 시간이 많이 걸리게 됩니다. 이것을 별도의 스레드로 동작시키면, 조금 느리게 나오지만 리스트 이동하는 것에는 느려짐 없이 동작할 수 있게 됩니다.

Swift는 과거 콜백 기반의 복잡한 비동기 코드에서 벗어나, async/await와 액터(Actor)를 포함한 강력하고 현대적인 동시성 모델을 제공합니다.

12. Swift 오류 처리(Error Handling): 견고한 앱을 만드는 필수 요소

12. Swift 오류처리 썸네일
안녕하세요! 지난 블로그에서는 코드의 유연성과 확장성을 높이는 설계도, 프로토콜에 대해 알아보며 Swift다운 프로그래밍 패러다임을 이해했습니다. 오늘은 여러분이 만드는 앱을 더욱 견고하고 안정적으로 만들어 줄, 바로 오류 처리(Error Handling)에 대해 깊이 파고들 것입니다. 🛡️

프로그램을 만들다 보면 예상치 못한 상황이 발생하곤 합니다. 예를 들어, 존재하지 않는 파일을 열려고 하거나, 네트워크 연결이 끊기거나, 유효하지 않은 입력값을 받거나 하는 경우들이죠. 이러한 상황을 적절하게 처리하지 않으면 앱이 강제로 종료(크래시)되어 사용자 경험을 심각하게 해칠 수 있습니다. Swift는 이러한 오류(Error) 상황을 우아하고 안전하게 다룰 수 있는 메커니즘을 제공합니다.

2025/07/19

11. Swift 프로토콜(Protocol): 규약을 정의하고 기능을 확장하는 설계도

11. Swift 프로토콜(Protocol) 썸네일 이미지
안녕하세요! 지난 블로그에서는 인스턴스를 안전하게 생성하고 해제하는 초기화(Initialization)에 대해 자세히 알아보았죠. 오늘은 Swift 프로그래밍에서 매우 중요하며, Swift를 더욱 Swift답게 만드는 핵심 개념인 프로토콜(Protocol)에 대해 깊이 파고들 것입니다.

프로토콜은 마치 건축물의 '설계도'와 같습니다. 실제 건물을 짓기 전에, 어떤 구조를 가지고 어떤 기능을 해야 할지 미리 약속해두는 것처럼, 프로토콜은 특정 기능을 수행하기 위해 타입이 갖춰야 할 요구사항(규약)을 정의합니다. 클래스, 구조체, 열거형은 이 프로토콜을 '채택(Adopt)'하여 설계도에 명시된 요구사항을 실제로 구현합니다.

프로토콜을 통해 우리는 코드의 유연성과 확장성을 크게 높일 수 있으며, 다형성(Polymorphism)을 구현하는 데 상속보다 더 강력하고 안전한 대안을 제공합니다.

10. Swift 초기화(Initialization): 인스턴스를 안전하게 생성하는 법

10. Swift 초기화 썸네일
안녕하세요! 지난 블로그에는 코드 재사용성을 높이는 상속에 대해 알아보았죠. 오늘은 우리가 만든 클래스, 구조체, 열거형 같은 타입의 인스턴스를 생성하는 방법, 즉 초기화(Initialization)에 대해 깊이 파고들 것입니다.

초기화는 단순히 객체를 '만드는' 과정을 넘어, 인스턴스가 사용되기 전에 모든 저장 프로퍼티가 적절한 초기 값을 가지도록 보장하는 중요한 역할을 합니다. 이는 Swift의 강력한 타입 안전성 원칙의 핵심이며, 여러분의 앱에서 발생할 수 있는 잠재적인 오류를 미리 방지하는 데 필수적입니다.


2025/07/16

9. Swift 상속(Inheritance): 코드 재사용성을 높이는 방법

9. Swift 상속(Inheritance): 코드 재사용성을 높이는 방법

안녕하세요! 

지난 블로그에는 객체의 속성을 정의하는 프로퍼티와 동작을 정의하는 메서드에 대해 알아보며 클래스와 구조체를 더욱 풍부하게 만드는 방법을 익혔죠. 오늘은 객체 지향 프로그래밍의 가장 강력한 기능 중 하나이자 코드 재사용성의 꽃이라고 할 수 있는 상속(Inheritance)에 대해 깊이 파고들 것입니다.

상속은 마치 부모가 자녀에게 유전자를 물려주듯이, 기존 클래스의 특성과 기능을 새로운 클래스가 물려받아 자신의 것처럼 사용할 수 있게 해주는 메커니즘입니다. 이를 통해 우리는 이미 잘 만들어진 코드를 재활용하고, 거기에 새로운 기능을 추가하거나 기존 기능을 변경하여 더욱 효율적이고 유연한 프로그램을 만들 수 있습니다.

2025/07/15

8. Swift 프로퍼티와 메서드: 객체의 속성과 동작 정의하기

안녕하세요! 지난 블로그에는 열거형을 통해 관련된 값들을 하나의 타입으로 묶는 방법을 배웠고, 그전에는 구조체와 클래스를 통해 사용자 정의 타입을 만드는 방법을 익혔죠. 오늘은 이렇게 정의한 타입들이 어떤 데이터(속성)를 가지고, 어떤 행동(동작)을 할 수 있는지 정의하는 방법에 대해 알아보겠습니다. 바로 프로퍼티(Property)와 메서드(Method)입니다.

프로퍼티와 메서드는 객체 지향 프로그래밍의 핵심 개념인 캡슐화(Encapsulation)를 구현하는 데 필수적인 요소입니다. 이들을 통해 우리는 실제 세계의 객체처럼 '무엇을 가지고 있는지'와 '무엇을 할 수 있는지'를 코드 안에서 표현할 수 있습니다.


2025/07/12

7. Swift 열거형(Enum): 관련된 값들을 하나의 타입으로 묶는 방법

Swift 열거형(Enum)
안녕하세요! 지난 블로그에는 여러 데이터를 효율적으로 관리하는 컬렉션 타입인 배열과 딕셔너리에 대해 마스터했습니다. 오늘은 Swift에서 관련된 값들을 그룹화하여 코드의 가독성과 안전성을 높이는 데 사용되는 강력한 타입인 열거형(Enumeration), 줄여서 Enum에 대해 자세히 알아보겠습니다.

열거형은 단순히 값들을 나열하는 것을 넘어, 코드의 실수를 줄이고 의미를 명확하게 전달하는 데 큰 도움을 줍니다. 마치 여러 옵션이 있는 메뉴판처럼, 정해진 선택지 안에서만 값을 선택하도록 강제함으로써 예측 불가능한 상황을 방지하고 코드의 안정성을 높여줍니다.

2025/07/09

6. Swift 구조체(Struct)와 클래스(Class): Swift 객체 지향 프로그래밍의 핵심

6.Swift 구조체와 클래스 썸네일 이미지
안녕하세요! 지난 블로그에서는 배열과 딕셔너리에 대해서 이해했습니다.

오늘은 Swift 프로그래밍의 가장 근간이 되는 두 가지 사용자 정의 데이터 타입, 바로 구조체(Struct)클래스(Class)에 대해 깊이 파고들 것입니다. 

구조체와 클래스는 데이터를 캡슐화하고, 관련된 기능들을 묶어서 관리하는 객체 지향 프로그래밍의 핵심 요소입니다. 
이 둘은 겉보기에는 비슷해 보이지만, 내부적으로 데이터를 다루는 방식에 큰 차이가 있어 Swift 개발에서 매우 중요한 선택의 기로에 서게 합니다. 
언제 무엇을 사용해야 할지 명확히 이해하는 것이 견고하고 효율적인 앱을 만드는 데 결정적인 역할을 할 것입니다. 

5. Swift 컬렉션 타입: 배열(Array)과 딕셔너리(Dictionary) 마스터하기

5.  Swift 컬렉션 타입 썸네일 이미지
안녕하세요! 지난 블로그에는 Swift 앱의 안정성을 책임지는 옵셔널에 대해 자세히 알아보았는데요.

오늘은 이제 여러 개의 데이터를 체계적으로 묶어서 관리하는 데 필수적인 도구인 컬렉션 타입(Collection Types)에 대해 알아보겠습니다.

Swift는 데이터를 효율적으로 저장하고 접근할 수 있도록 세 가지 주요 컬렉션 타입을 제공합니다.

배열(Array), 세트(Set), 그리고 딕셔너리(Dictionary). 이 세 가지 중에서 오늘은 가장 빈번하게 사용되는 배열과 딕셔너리에 집중하여 마스터하는 시간을 갖겠습니다. 이들을 잘 활용하면 복잡한 데이터도 깔끔하게 정리하고 원하는 대로 다룰 수 있습니다.

2025/07/05

2. Swift의 흐름 제어: 조건문(if, switch)과 반복문(for, while) 완전 정복

Swift Course 2. Swift 흐름제어
 이전 블로그(Swift 시작하기: 변수, 상수, 그리고 데이터 타입의 모든 것)에는 변수, 상수, 데이터 타입이라는 Swift의 기본적인 요소들을 알아보며 프로그램이 데이터를 어떻게 저장하고 다루는지 이해했습니다.

오늘은 이어서, 프로그램이 특정 조건에 따라 다르게 동작하거나, 특정 작업을 여러 번 반복하도록 만드는, 흐름 제어(Control Flow)에 대해 깊이 파고들 것입니다. 특히 조건문(if, switch)과 반복문(for, while)은 어떤 프로그래밍 언어에서든 핵심 중의 핵심이니, 오늘 내용을 잘 익혀두시면 Swift로 더욱 강력한 앱을 만들 수 있습니다.




2025/07/02

1. Swift 시작하기: 변수, 상수, 그리고 데이터 타입의 모든 것



오늘은 Swift 프로그래밍의 가장 기본적인 요소변수(Variables), 상수(Constants), 그리고 데이터 타입(Data Types)에 대해 나름 정리해 보겠습니다. 이 개념들을 확실히 이해해야 앞으로 Swift로 만들 모든 코드의 단단한 기초가 될 수 있을 것입니다.






1. 변수 (Variables): 변할 수 있는 값들의 보관함

프로그래밍에서 변수는 값을 저장하는 공간이라고 생각하면 쉽습니다. 이 공간에 저장된 값은 프로그램이 실행되는 동안 언제든지 변경될 수 있습니다. Swift에서 변수를 선언할 때는 var 키워드를 사용합니다.

💡 왜 사용할까요? 사용자의 입력값, 계산 결과, 실시간으로 변하는 상태(예: 게임 점수, 현재 시간) 등을 저장할 때 유용합니다.

Swift 예시

var welcomeMessage = "안녕하세요, Swift 세계에 오신 것을 환영합니다!"
print(welcomeMessage) // 출력: 안녕하세요, Swift 세계에 오신 것을 환영합니다!

welcomeMessage = "다시 만나서 반갑습니다!" // 값 변경
print(welcomeMessage) // 출력: 다시 만나서 반갑습니다!

var userScore = 0 // 게임 점수
print("현재 점수: \(userScore)")

userScore = 100 // 점수 증가
print("새로운 점수: \(userScore)")

위 예시에서 welcomeMessageuserScorevar로 선언되었기 때문에 나중에 다른 값으로 변경할 수 있습니다.


2. 상수 (Constants): 한 번 정하면 변하지 않는 값

변수와 달리 상수는 한 번 값이 할당되면 프로그램이 끝날 때까지 그 값을 절대 변경할 수 없습니다. Swift에서 상수를 선언할 때는 let 키워드를 사용합니다.

💡 왜 사용할까요? 변하지 않는 고정된 값(예: 수학에서의 파이(π) 값, 앱 버전 번호, 고정된 메시지)을 저장하여 코드의 안정성을 높이고, 실수를 줄이는 데 도움이 됩니다. Swift는 기본적으로 상수를 사용하는 것을 권장합니다.


📝 Swift 코드 예시:

let maximumNumberOfLoginAttempts = 3 // 최대 로그인 시도 횟수
print("최대 로그인 시도 횟수: \(maximumNumberOfLoginAttempts)")

let companyName = "Apple Inc." // 회사 이름
print("회사 이름: \(companyName)")

// maximumNumberOfLoginAttempts = 5 // 에러 발생! 상수는 값을 변경할 수 없습니다.

maximumNumberOfLoginAttemptscompanyNamelet으로 선언되었으므로 값을 변경하려고 하면 컴파일 에러가 발생합니다. 이는 개발자의 의도치 않은 값 변경을 방지하여 코드의 견고함을 높여줍니다.


3. 데이터 타입 (Data Types): 값의 종류를 알려주는 분류표

Swift는 타입에 안전한(Type-safe) 언어입니다. 이는 Swift가 모든 변수와 상수에 저장되는 값의 데이터 타입을 명확하게 알고 있다는 의미입니다. 데이터 타입은 그 값이 숫자(정수, 소수), 문자, 참/거짓 등 어떤 종류의 값인지를 Swift에게 알려줍니다.

Swift는 대부분의 경우 개발자가 타입을 명시하지 않아도 초기값을 보고 스스로 타입을 추론(Type Inference)합니다. 하지만 필요하다면 직접 타입을 명시할 수도 있습니다.

💡 주요 데이터 타입:

  • Int (Integer): 정수를 저장합니다. (예: 10, -5, 0)
  • Double (Double-precision floating-point number): 부동 소수점(실수)을 저장합니다. 더 넓은 범위와 정밀도를 가집니다. (예: 3.14, -0.5, 100.0)
  • Float (Single-precision floating-point number): Double보다 적은 메모리를 사용하지만 정밀도가 낮습니다. (잘 사용되지 않음)
  • Bool (Boolean): 참(true) 또는 거짓(false) 두 가지 값만 가집니다. 조건문에서 많이 사용됩니다.
  • String (String of characters): 텍스트 문자열을 저장합니다. (예: "Hello", "Swift Programming")
  • Character: 단일 문자를 저장합니다. (예: 'A', '😀')

📝 Swift 코드 예시 (타입 추론 및 명시):

// 타입 추론 (Swift가 알아서 타입을 결정)
var age = 30 // Int로 추론
let pi = 3.14159 // Double로 추론
var isLoggedIn = true // Bool로 추론
let appName = "MyAwesomeApp" // String으로 추론

// 타입 명시 (개발자가 직접 타입을 지정)
var temperature: Double = 25.5
let statusCode: Int = 200
var isEnabled: Bool = false
let greeting: String = "안녕하세요"

// 주의: 다른 타입의 값을 할당할 수 없습니다.
// temperature = "스물다섯점오" // 에러 발생! String을 Double 변수에 할당할 수 없습니다.

정리하며

오늘은 Swift 프로그래밍의 가장 기본적인 세 가지 요소, 즉 값을 저장하는 공간인 변수(var)상수(let), 그리고 값의 종류를 나타내는 데이터 타입에 대해 알아보았습니다.

  • var: 값이 변할 수 있는 데이터를 저장할 때 사용합니다.
  • let: 한 번 할당되면 변하지 않는 데이터를 저장할 때 사용합니다. (Swift는 let 사용을 권장합니다!)
  • 데이터 타입: 저장되는 값의 종류를 명시하며, Swift의 타입 안전성을 보장합니다.

이 개념들을 잘 이해하고 나면, 다음 단계로 나아갈 준비가 된 것입니다. 다음 블로그에서는 Swift의 흐름 제어(조건문과 반복문)에 대해 자세히 알아보도록 하겠습니다.

내용 중에 틀린 부분이 있으면 댓글로 알려주세요.