
var : 변수 (변하는 수)var place: String
var place: String = "Paris"
var name: String = "라이언"
Text("\(name)님 안녕하세요")
# 결과 : 라이언님 안녕하세요
\(name)은 서식문자와 같이 활용String : 문자열Int(Integer) : 정수Float : 실수Double : 더 긴 실수Bool : 참과 거짓(true, false)왜 타입이 중요한가?
→ 스위프트는안전을 지향한다.
→JS와는 반대.
import SwiftUI
struct VariableType: View {
var name: String = "DaeHyeon"
var age: Int = 25
var height: Float = 180.1
var havePet: Bool = true
var body: some View {
// VStack = Vertical Stack (세로)
VStack{
// Text()는 문자열을 props로 받길 원함
Text("\(name)")
Text("\(age)")
Text("\(height)")
// havePet은 bool이므로 description()을 호출하여 문자열로 변경
// 원래는 해당 변수에 대한 "설명"을 불러옴.
Text("\(havePet.description)")
}
}
}
Array : 배열 (⭐ 같은 변수 만들기)indexes 와 Values 로 구성
index(인덱스)로 접근
let data: [String] = ["eggs", "milk", "flour"]
Set : 집합 (⭐ 모임)Array 와 흡사하여 헷갈림 주의
let musics: Set<String> = ["Rock", "Jazz", "Classical"]
집합이라는 특성 상 부분집합, 교집합, 합집합 등등이 존재
같은 요소들은 제거된다. (중복제거)
순서가 없다.
Dictionary : 딕셔너리(사전) (⭐ Key와 Value)Key 와 Value 로 구성됨 (마치 Json 처럼)
Apple : 사과, Desk : 책상 등등..
var dict = [Key : Value]
var dict = ["XYZ" : "Toronto Pearson"]
dict["XYZ"] 결과 -> "Toronto Pearson"
import SwiftUI
struct MyCollections: View {
var foods: [String] = ["eggs", "bananas", "beans"]
var jazzs: Set<String> = ["재즈1", "재즈2", "재즈3", "재즈4"]
var hiphop: Set<String> = ["힙합1", "힙합2", "힙합3", "재즈4"]
var koEngDict: [String: String] = ["사과" : "Apple", "바나나": "Banana"]
var body: some View {
// Array 예제
Text(foods[0])
Text(foods[1])
Text(foods[2])
// Set 예제 (hiphop과 jazzs의 합집합(intersection) 출력(description))
Text(hiphop.intersection(jazzs).description)
// Dict 예제
// "!"는 "옵셔널"의 의미를 가지고 있으며 추후 학습 예정
Text(koEngDict["사과"]!)
Text(koEngDict["바나나"]!)
Button {
var intersectionMusic = hiphop.intersection(jazzs)
} label: {
Text("클릭")
}
}
}
if {참 or 거짓} {
// 실행될 코드
} else {
// 실행될 코드
}
// else if
let score = 75
if score >= 90 {
print("A 학점")
} else if score >= 80 {
print("B 학점")
} else if score >= 70 {
print("C 학점")
} else {
print("F 학점")
}
// 예제 (다중조건문)
let age = 20
let isStudent = true
if age >= 18 && isStudent {
print("성인 학생입니다.")
}
if age < 18 || isStudent {
print("학생이거나 미성년자입니다.")
}
// 삼항연산자
let score = 90
let result = score >= 80 ? "합격" : "불합격"
print(result) // 합격
guard 라는 요소가 존재함.guard 조건 else {
// 조건이 false일 때 실행 (조기 탈출)
exit(0) // 함수 종료, 에러 처리 등
}
// guard문은 반드시 else 문이 포함되어있어야 동작한다.
Guardguard 는 swift 의 조기 탈출(Early exit) 를 위해 사용되는 조건문.거짓(false) 일때 코드 블록을 탈출하거나 오류를 처리하는 사용한다. → if문 은 true 가 전재 조건이라면 guard문 은 false 가 전재조건!func checkAge(_ age: Int) {
guard age >= 18 else {
print("미성년자는 입장할 수 없습니다.")
return
}
print("입장 가능합니다.")
}
checkAge(20) // 입장 가능합니다.
checkAge(16) // 미성년자는 입장할 수 없습니다.func checkUser(name: String?) {
if let validName = name {
print("이름은 \(validName)입니다.")
} else {
print("이름이 없습니다.")
}
}
checkUser(name: "John")
checkUser(name: nil)func checkUser(name: String?) {
guard let validName = name else { // else문 필수
print("이름이 없습니다.")
return // 조기 탈출 필수
}
print("이름은 \(validName)입니다.")
}
checkUser(name: "John")
checkUser(name: nil)guard 문을 사용하는가?guard let 을 사용하여 옵셔널을 해제 후 코드에서 안전하게 사용할 수 있다.