[Mac 개발 일기] Swift 문법 기초

muchan
muchan
∙∙조회 11인생리롤중

Swift, SwiftUI, WidgetKit

먼저 iOS 개발에서 사용하는 세 가지 개념을 구분할 필요가 있다.

  • Swift: Apple에서 개발한 프로그래밍 언어
  • SwiftUI: Swift를 사용하여 화면을 구성하는 UI 프레임워크
  • WidgetKit: 위젯을 구성하고 데이터를 갱신하는 프레임워크

즉, Xcode는 개발 도구이고 Swift는 프로그래밍 언어이다.

변수와 상수

Swift에서는 var와 let을 사용하여 변수와 상수를 선언한다.

swift
var count: Int = 0       // 변수
let size: CGFloat = 28   // 상수

  • var: 값을 변경할 수 있다.
  • let: 초기화한 이후 값을 재대입할 수 없다.

Swift는 이름: 타입 순서로 작성하며, 타입을 생략하면 자동으로 추론하기도 한다.

swift
let enabled = true  // Bool 타입으로 추론

구조체와 프로토콜

Swift에서는 struct 키워드를 사용하여 구조체를 선언한다.

swift
struct HeartEntry: TimelineEntry {
    let date: Date
    let filled: Bool
}

  • struct: 값 타입인 구조체를 선언한다.
  • TimelineEntry: 위젯의 타임라인 항목이 따라야 하는 프로토콜이다.
  • :: 프로토콜을 채택하거나 타입을 상속할 때 사용한다.

프로토콜은 C#의 인터페이스와 비슷한 개념이다.

Swift의 구조체는 조건에 따라 초기화 구문이 자동으로 제공되며, 객체를 생성할 때 new 키워드를 사용하지 않는다.

swift
let entry = HeartEntry(date: .now, filled: false)

함수와 클로저

Swift에서는 func 키워드를 사용하여 함수를 선언한다.

swift
func add(a: Int, b: Int) -> Int {
    a + b
}

let result = add(a: 2, b: 3)

반환 타입은 -> 뒤에 작성하며, 함수 본문이 단일 표현식이라면 return을 생략할 수 있다.

또한 Swift에는 C#의 람다 표현식과 비슷한 클로저(Closure)가 존재한다.

swift
let doubled = [1, 2, 3].map { number in
    number * 2
}

클로저에서 in 앞은 매개변수, 뒤는 실행 내용을 의미한다.

위 코드의 map은 배열의 각 요소를 두 배로 변환하여 새로운 배열을 생성한다.

결과는 [2, 4, 6]이 된다.

마무리

새로운 문법이라 멀미날 뻔 했지만, gpt한테 C# 공부했으니까 그거랑 관련된 개념 있으면 연관지어서 설명해달라고 하니까 이해가 더 잘 됐다. 확실히 프로그래밍 언어는 하나만 완벽히 공부하면 다른 언어는 쉽게 공부할 수 있는 것 같다. 물론 C#을 완벽히 공부한 상태는 아니지만 그래도 웬만한 개념 정도는 알고 있어서 새로운 언어 익히는데 도움이 되는 것 같다.