ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [3주차] Swift 문법 2
    iOS프로그래밍기초 2024. 9. 19. 16:41

    1.  swift 문법 복습

    var name = "Hello"
    var age = 10
    var aa = "이름은 \(name)이고, 나이는 \(age)입니다!"
    
    print(aa)

     

    변수는 var.  상수는 let 을 사용한다.

    처음 초기화 시 변수 옆에 자료형을 작성하지 않아도 된다.    // 타입을 추론

    \() 를 사용해서 문자열 사이에 값을 넣을 수 있다.   // js의 $() 같은문법

     

     

     

    2. 변수 var 상수 let

    let.  <<   js 등의 언어에서 const 

     

     

     

     

     

    4. 튜플

     

    let myTuple = (10,1.1,"hello")
    print(myTuple.2)
    //인데스 형식으로 접근할 수 있다.
    
    let (myInt , _ , myString) = myTuple
    print(myString)
    // 분해하기 편하다
    
    let myTuple1 = (count: 10 , length: 12.1, message: "Hi")
    print(myTuple1.1 ,myTuple1.count
    //레이블 형태로 접근할 수 있다

     

     

     

    // 빈 튜플의 이름을 void라고 이름 지어 놨음

    void가 뭔가 -> 빈 튜플의 이름을 지어놓것이다.

     

     

    5. 다른 언어와 차이점 여러개

    ++ , -- 연산자가 없음

     

    == ,  === 차이

     

     

    6. 범위 연산자

     

    많이 새로움

     

     

    7. 클래스 , 객체 , 인스턴스

    설계도인 클래스로 만들어진 실체 -> 객체 

    실제로 사용중인 객체 -> 인스턴스

     

     

    8. for문 과  ...

     

    in 과 함께 쓰면서 간단하게 반복할 수 도 있음

    변수를 사용하지 않으면 생략할 수 있음

     

    9. print 문 사용

    for name in 1...5 {
        print(name)
    }
    
    for name in 1...5 {
        print(name, terminator: " ")
    }
    
    for name in 1...5 {
        print(name, terminator: "+")
    }
    
    for name in 1...5 {
        print(name, separator: "..." , terminator: "")
    }

     

    // 띄어쓰기 개행 등등 여러가지 조절 할 수 있음

     

     

    10. dictionary

     

    11.  repeat while 문

    타 언어의 do while 문과 같음 

     

     

    12.   if 문 조건

    swift 는 if문에서 한줄만 사용해도 반드시 {} 중괄호를 사용해야한다 => for문도 마찬가지다.

     

     

     

    13. if문 조건에서 콤마 사용 : 조건나열

     

     

    조건나열 

     

     

     

     

    14. 가드문 

    정말 중요하지만 일단 패스 함 -> 함수 이해도 필요

     

     

     

     

    15. switch - case 문

    swift 에서는 눈에 보이지 않는 break가 있다 .  작성안해도됨

     

     

    비워 놓을 수 없다

     

     

     

     

    where 절 : 조건을 부가적으로 줄 수 있는 방법이다.

     

    스위프트에서 where절을 많이 사용한다.

     

     

    16. where 절 

     

     

     

    17.  fallthrough

     

    break문이 없기 때문에 생긴 fallthrough

     

     

     

     

     

    18.  옵셔널 (optional).  :        어려움

     

    var x : Int?
    print(x) //nil
    
    //swift 는 값이 없다는 뜻으로 nil을 사용한다
    //null과는 다르다.  null자체로 값을 표현

     

     

    1단계

    var x : Int?
    x = 10
    print(x, x!) //Optional(10)  //10
    
    //optional은 그냥 출력이 안된다. 옵셔널에 감싸져서 나온다
    //!를 사용해서 옵셔널을 풀어줘야한다

     

     

    2단계

    var x : Int?
    print(x) //nil
    print(x, x!)
    //__lldb_expr_68/MyPlayground.playground:4: Fatal error: Unexpectedly found nil while unwrapping an Optional value
    
    //대표적인 오류로 없는값을 풀려고 하는것

     

     

    3단계

    var x : Int? = nil
    print(x)  //nil
    //optional 타입 변수는 값이 없음을 나타내는 nil을 넣을 수 있다.
    
    
    var y : Int = nil
    print(y)  //error
    //일반 자료형 변수는 nil을 못담는다.

     

     

    4단계

    var x : Int?
    var y : Int
    x = 2
    print(x)
    //옵셔널 변수에 값 - 래핑되었다.
    //항상 래핑됨
    
    x = x! + 2
    print(x)
    //!로 푸는걸 강제로 푼다고 언래핑이라함
    //계산을 위해서는 항상 풀어야함
    //다시 넣으면 래핑됨
    
    y = x!
    print(y)

     

     

    var x : Int?
    x = 2
    if x != nil {
        print(x!)
    }
    //그냥 강제로 풀면 안된다.
    //위 처럼 조건을 주는 형식으로 풀어야한다.

     

     

     

    주의사항

    var x : Int?
    x = 2
    if x!=nil {.   //주의)이처럼 붙이면 연산자 의미가 바뀐다.
        print(x!)
    }
    //비교할때는 항상 스페이스를 줘야한다
    //!=의 !가 x!를 먼저계산하게됨

     

     

     

     

     

    옵셔널 바인드 :    옵셔널 잘 푸는법

    var x : Int?
    x = 10
    if let xx = x { //옵셔널 변수 x가 값(10)이 있으므로 언래핑해서 일반 상수 xx에 대입하고 if문 실행
        print(x,xx)
    }
    else {
        print("nil")
    }
    var x1 : Int?
    if let xx = x1 { //옵셔널 변수 x1이 값이 없어서 if문의 조건이 거짓이 되어 if문 실행하지 않고 else로 감
        print(xx)
    }
    else {
        print("nil")
    }

    if 다음에 var , let으로 변수를 놓고 옵셔널 변수를 넣으면   옵셔널 바인딩이 된다.

     

    스위프트에서 아주 많이 쓰이는 문법

     

    ios 개발시 옵셔널을 바인딩을 하는 3가지 방법

     

     

    가장 최근 문법

    var x : Int?
    x = 10
    if let x {
        print(x)
    }
    else {
        print("nil")
    }

    if-let 문법 (short form of if-let to the Optional Binding) 

     

     

     

    여러개의 옵셔널 바인딩 하기

    var x : Int?
    var y : Int?
    x = 10
    y = 5
    if let x , let y {   //,로 이어갈 수 있다. //let을 붙여야하는걸 주의
        print(x+y)
    }
    else {
        print("nil")
    }

     

     

     

     


    ? 와 ! 

    var x : Int?
    x = 10
    
    var y : Int!
    y = 20
    
    print(x,y)
    //Optional(10) Optional(20)
    //같다

     

     

     

    차이점

    var x : Int?
    x = 10
    //x = x+2  //error
    
    var y : Int!
    y = 20
    y = y+2    //자동으로 풀린다.
    print(x,y)

    풀면 더 좋을 꺼 같을 때 ! 사용. 컴파일러가 자동으로 풀어줌

    뭐가 좋을까?   

    대부분 ? 을 사용하고 풀어서 사용함

    !는 나중에 필요함

     

     

     

     

     

     

     

    가장많이 쓰는 문법 ??

    let defaultAge = 1
    var age : Int?
    age = 3
    print(age) //과제:값은? //Optional(3)
    
    var myAge = age ?? defaultAge
    //age가 nil이 아니므로 언래핑된 값이 나옴
    
    print(myAge) //과제: 값은? 3
    var x : Int? = 1
    var y = x ?? 0
    print(y)  // 1

     

          옵셔널 변수값     ??      옵셔널 값이 없을때(nil일때)  들어갈 값

Designed by Tistory.