728x90
반응형
for 문부터 시작
var a = [1,2,3,4,5]
for value in a {
print(value)
}
for (index, value) in a.enumerated() {
print("\(index) = \(value)")
}
//where 절 가능
for value in a where value > 3 {
print(value)
}
var b = 0
while b < 10 {
b += 1
}
//do while 처럼 먼저 실행 코드
repeat {
b += 1
} while a < 10
guard 배우기
var a: Int? = 0
var b: Int? = 5
/*
func foo(value: Int?) {
if let value = value {
print(value)
} else {
print("empty")
return
}
}
*/
//guard 사용 동일 코드
func foo(value: Int?) {
guard let value = value else {
print("empty")
return
}
print(value)
}
foo(value: nil)
foo(value: 1)
클래스와 구조체
구조체는 값을 복사해서 사용하니 특별한 경우가 아니면 구조체를 쓰는게 안정적 (클래스는 참조라서 값이 바뀔 수 있음)
struct Struct1 {
var value: Int = 0
func display() {
print(value)
}
}
class ClassA {
var value: Int = 0
func display() {
print(value)
}
}
//클래스는 상속 가능
class ClassB: ClassA {
//소멸자 제공
deinit {
//메모리에서 해제 되기전에 마지막 작업 가능
}
}
//둘은 거의 동일
var struct1 = Struct1()
var class1 = ClassA()
struct1.value
class1.value
struct1.display()
class1.display()
값타입과 참조 타입의 구분은 이 내용이 도움됨
https://goods99.tistory.com/176
enum
특정 객체가 타입이 여러개 있을 때 (ex: 게임의 난이도가 여러개 일 때)
//enum 내에서도 값을 설정 가능
enum GameLevel1 {
case easy
case medium
case hard(level: Int)
}
let level: GameLevel1 = .easy
//let levels: [GameLevel1] = [.easy, .medium, .hard]
let level2 = GameLevel1.hard(level: 100)
//extension도 사용 가능
extension GameLevel1 {
func display() {
switch self {
case .easy:
print("쉬움")
case .medium:
print("중간")
case let .hard(level):
print("\(level)어려움")
}
}
}
GameLevel1.easy.display()
GameLevel1.hard(level: 500).display()
접근 제어자
https://hongssup.tistory.com/334
728x90
반응형
'Apple Developer > Swift' 카테고리의 다른 글
GitHub에 배포한 스위프트 패키지 가져오기 (0) | 2024.04.01 |
---|---|
xcode 에서 test 버튼 (0) | 2024.04.01 |
xcode 코드 접기 (Code folding ribbon) (0) | 2024.03.29 |
Swift 어려운 내용 (0) | 2023.08.22 |
Swift 초보 공부 잼나여! (0) | 2023.08.21 |