Apple Developer/Swift

Swift 초보 2

eastsky21 2023. 8. 22. 19:07
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

 

값타입과 참조타입 차이점

swift에 자료구조들은 두가지 타입으로 존재한다 값 타입 (Value Type) 참조 타입(Reference Type) - 구조체 (Struct) - 열거체 (Enum) - 튜플 (Tuple) - 클래스 (Class) - 클로저 (Closure) 값 타입 대표 '구조체' 와 참

goods99.tistory.com

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://seons-dev.tistory.com/entry/Swift-%EA%B8%B0%EC%B4%88%EB%AC%B8%EB%B2%9520-%EC%8A%A4%EC%9C%84%EC%B9%98-Switch

 

Swift : 기초문법 [스위치 - Switch(break/fallthrough)]

목차 Switch switch 구문도 소괄호(())를 생략할 수 있습니다. 단, break 키워드 사용은 선택 사항입니다. 즉, case 내부의 코드를 모두 실행하면 break 없이도 switch 구문이 종료된다는 의미입니다. 이것은

seons-dev.tistory.com

접근 제어자

https://hongssup.tistory.com/334

 

[Swift] Access Control 접근 제어자 종류 및 사용

접근 제어자 사용하는 이유 - 외부로부터 데이터를 보호하기 위해서 - 외부에는 불필요한, 내부적으로만 사용되는 부분을 감추기 위해서 더보기 * 참고 : 은닉화(Hiding)란? - 객체지향 개발에서 외

hongssup.tistory.com

 

728x90
반응형