Swift는 애플(Apple)에서 개발한 프로그래밍 언어로, iOS, macOS, watchOS, tvOS 애플리케이션 개발에 주로 사용됩니다. Swift는 사용하기 쉽고, 안전하며, 성능이 뛰어나기 때문에 많은 개발자들이 선호하는 언어입니다. 이 글에서는 Swift 언어의 기본 개념을 설명하고, 이를 통해 프로그래밍을 시작할 수 있도록 도와드리겠습니다.
1. Swift의 기본 문법
Swift는 간결하고 읽기 쉬운 문법을 제공합니다. 다음은 Swift의 기본적인 코드 예제입니다.
swift코드 복사// Hello, World! 출력
print("Hello, World!")
이 코드에서 print 함수는 콘솔에 문자열을 출력하는 역할을 합니다. Swift의 주석은 //로 시작하며, 한 줄 주석은 // 이후의 모든 내용을 주석 처리합니다.
2. 변수와 상수
변수와 상수는 데이터를 저장하기 위해 사용됩니다. 변수는 var 키워드를 사용하여 선언하며, 값이 변경될 수 있습니다. 반면, 상수는 let 키워드를 사용하여 선언하고, 한 번 값이 설정되면 변경할 수 없습니다.
swift코드 복사var name = "John"
let age = 25
name = "Jane" // 변수 값 변경 가능
// age = 26 // 오류 발생: 상수는 값 변경 불가
위 코드에서 name은 변수로 선언되어 값이 변경될 수 있지만, age는 상수로 선언되어 변경할 수 없습니다.
3. 데이터 타입
Swift는 강타입(Strongly Typed) 언어로, 모든 변수와 상수는 특정 데이터 타입을 가집니다. 대표적인 데이터 타입으로는 Int(정수), Double(실수), String(문자열), Bool(불리언)이 있습니다.
swift코드 복사var integer: Int = 10
var double: Double = 20.5
var text: String = "Hello"
var isSwiftFun: Bool = true
Swift는 타입 추론(type inference)을 지원하여, 명시적으로 타입을 지정하지 않아도 Swift 컴파일러가 자동으로 타입을 추론합니다.
4. 기본 연산자
Swift는 다양한 연산자를 제공하며, 이는 다른 프로그래밍 언어와 유사합니다.
- 산술 연산자:
+,-,*,/,% - 비교 연산자:
==,!=,>,<,>=,<= - 논리 연산자:
&&(AND),||(OR),!(NOT)
swift코드 복사let a = 10
let b = 20
let sum = a + b // 30
let isEqual = (a == b) // false
let isGreater = (a > b) // false
let logicalAnd = (a < b) && isSwiftFun // true
5. 조건문
조건문은 특정 조건에 따라 코드 블록을 실행하는 데 사용됩니다. Swift의 조건문은 if, else if, else 구문을 사용합니다.
swift코드 복사let score = 85
if score >= 90 {
print("A학점")
} else if score >= 80 {
print("B학점")
} else if score >= 70 {
print("C학점")
} else {
print("F학점")
}
위 코드에서 score에 따라 다른 메시지를 출력하는 조건문이 사용되었습니다.
6. 반복문
반복문은 특정 조건이 참인 동안 코드를 반복해서 실행합니다. Swift는 for-in 반복문과 while 반복문을 제공합니다.
swift코드 복사// for-in 반복문
for i in 1...5 {
print(i) // 1부터 5까지 출력
}
// while 반복문
var countdown = 5
while countdown > 0 {
print(countdown) // 5부터 1까지 출력
countdown -= 1
}
7. 함수
함수는 특정 작업을 수행하는 코드 블록입니다. Swift에서 함수는 func 키워드를 사용하여 정의합니다.
swift코드 복사func greet(name: String) -> String {
return "Hello, (name)!"
}
let message = greet(name: "John")
print(message) // "Hello, John!" 출력
위 함수 greet는 이름을 인자로 받아, 인사 메시지를 반환합니다. 함수의 반환 타입은 화살표(->) 뒤에 명시됩니다.
8. 컬렉션 타입
Swift는 배열(Array), 세트(Set), 딕셔너리(Dictionary)와 같은 컬렉션 타입을 제공합니다. 이들은 여러 값을 저장하는 데 사용됩니다.
- 배열: 순서가 있는 값의 목록
swift코드 복사var fruits = ["Apple", "Banana", "Cherry"]
fruits.append("Durian") // 배열에 새로운 값 추가
- 세트: 순서가 없고 유일한 값의 집합
swift코드 복사var uniqueNumbers: Set = [1, 2, 3, 1]
print(uniqueNumbers) // {2, 3, 1} - 중복값 없음
- 딕셔너리: 키와 값의 쌍으로 구성된 컬렉션
swift코드 복사var scores = ["John": 85, "Jane": 90, "Alex": 78]
scores["Jane"] = 95 // 딕셔너리 값 변경
9. 옵셔널
Swift는 변수나 상수가 값이 없을 수도 있는 경우를 표현하기 위해 옵셔널(Optional)을 사용합니다. 옵셔널은 값이 있거나(Some), 없음을(nil) 나타낼 수 있습니다.
swift코드 복사var optionalName: String? = "John"
optionalName = nil // 값이 없음을 의미
if let name = optionalName {
print("Hello, (name)") // 옵셔널 바인딩으로 안전하게 값 추출
} else {
print("이름이 없습니다.")
}
옵셔널 바인딩(if let)은 옵셔널 값이 존재할 때 안전하게 값을 추출하여 사용할 수 있도록 합니다.
10. 클래스와 구조체
Swift는 객체지향 프로그래밍(OOP)을 지원하며, 클래스를 사용하여 객체를 정의할 수 있습니다. 또한 구조체(structure)도 제공하여 값 타입(value type)을 정의할 수 있습니다.
swift코드 복사class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
func introduce() -> String {
return "Hi, I'm (name) and I'm (age) years old."
}
}
let person = Person(name: "John", age: 30)
print(person.introduce()) // "Hi, I'm John and I'm 30 years old." 출력
위 코드에서 Person 클래스는 이름과 나이를 속성으로 가지며, 자신을 소개하는 메서드를 포함합니다.
결론
Swift는 강력하면서도 사용하기 쉬운 프로그래밍 언어입니다. 이 글에서 설명한 기본 개념들을 이해하면 Swift로 애플리케이션을 개발하는 데 필요한 기본적인 준비가 된 것입니다. 앞으로 다양한 예제와 프로젝트를 통해 Swift에 대한 이해를 더욱 깊게 할 수 있기를 바랍니다. Swift의 공식 문서와 커뮤니티 리소스를 활용하면 더욱 빠르게 성장할 수 있습니다. Swift 프로그래밍 여정을 시작해 보세요!