본문 바로가기

Apple Developer/Swift

Swift 초보 2

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
반응형

'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