ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [레인스톤 iOS] 스위프트 easy하게 배워볼까? - 연산자(1)
    Swift 기초문법 2022. 1. 26. 09:40
    반응형

    안녕하세요!

    iOS개발자로 일하고있는 레인스톤입니다:)

     

    뭔가 기초를 복습하기에 좋은 자료를 찾았습니다.

    취업이후 들뜬 마음 + 바쁜 업무 등으로 몇 달간 학습이 부족했습니다.

    반성하는 마음으로 Swift를 다시 한 번 공부해보려고 합니다!!

    기본 연산자(Basic Operator)

    swift에서는 산술 연산자, 논리 연산자, 범위 연산자를 지원합니다.

     

    할당 연산자

     

    let a = "공부"
    var b = "하기 싫다."
    b = "너무 좋다."
    
    print(a, b) // 공부 너무 좋다.

     

    음... 뭔가 속마음이 잠깐 들킨 것 같은데... 착각이겠죠?

     =  연산자를 통해 상수나 변수에 값을 할당할 수 있습니다.

     

    let (x, y) = (0, 0)
    let (nx, ny) = (x+1, y-1)
    
    print(x, y) // 0 0
    print(nx, ny) // 1, -1

     

    이렇게 튜플을 활용해서 여러 값을 한 번에 할당할 수도 있습니다.

    저는 코딩테스트할 때 x,y 값을 이런식으로 많이 활용하고는 합니다.

     

    스위프트에서 할당 연산자는 값을 반환하지 않습니다.

    요게 무슨 뜻이냐...? 하면

     

    let (x, y) = (0, 0)
    
    if x = y { // 여기서 오류가 난다는 뜻입니다.
        print("공부 끝")
    }

     

    할당 연산자가 값을 반환하지 않는 이유는 동등비교연산자(==)를 사용해야하는 곳에

    할당 연산자(=)가 실수로 사용되는 것을 막기 위함이라고 합니다!

     

    오... 역시 swift는 타이트하네요.

    충격적인건 위 코드대로라면 "공부 끝"은 영원히 출력되지 않겠군요... ㅠㅠ

     

    산술 연산자

     

    var a = 5
    var b = 2
    
    print(a-b) // 3 빼기 연산자
    print(a+b) // 7 더하기 연산자
    print(a*b) // 10 곱하기 연산자
    print(a/b) // 2 나누기 연산자
    print(a%b) // 1 나머지 연산자

     

    간단하죠? 더하기, 빼기, 곱하기 , 나누기 등 기본적인 사칙 연산부터 나머지 연산까지 가능합니다.

    그런데 너무 간단하면 심심하니까? 심심한김에 숫자 말고 문자도 계산해볼까요?

     

    var a = "a"
    var b = "b"
    
    print(a-b) // Binary operator '-' cannot be applied to two 'String' operands
    print(a+b) // "ab"
    print(a*b) // Binary operator '*' cannot be applied to two 'String' operands
    print(a/b) // Binary operator '/' cannot be applied to two 'String' operands
    print(a%b) // Binary operator '%' cannot be applied to two 'String' operands

     

    오호... 산술 연산자 중  + 는  문자열을 합치기 위해서도 사용이 가능하군요.

     

    합성 할당 연산자

     

    var a = 1
    a += 2 // a = a + 2와 같은 기능입니다.
    
    print(a) // 3

     

     

    할당 연산과 덧셈 연산으로 구성된 연산을 합성하면  +=   형태로 축약해서 사용이 가능합니다.

    주의할 점은 합성 할당 연산자도 할당 연산자와 같이 값을 반환하지 않습니다.

    즉, 아래와 같이 b에 원하는 값이 할당되지 않습니다.

     

    var a = 1
    let b = a+=2
    
    print(b)// ()

     

    비교 연산자

     

    • 같다 (a == b)
    • 같지 않다 (a != b)
    • 크다 (a > b)
    • 작다 (a < b)
    • 크거나 같다 (a >= b)
    • 작거나 같다 (a <= b)

     

    각 비교 연산은 true 혹은 false 값을 반환합니다.

    주로 if-else 구문을 같이 활용하죠?

     

    let name = "레인스톤"
    
    if name == "레인스톤" {
        print("개같이 멸망")
    } else {
        print("개같이 부활")
    }
    // 개같이 멸망

     

    또한 스위프트에서는 같은 타입 값을 가지는 튜플도 비교가 가능합니다.

    튜플의 비교는 왼쪽에서 오른쪽 ( -> ) 으로 이루어지고 한 번에 한 개의 값만 비교합니다.

    다른 두 값을 비교할 때까지 수행하고 다른 두 값을 비교했다면 더 이상 값을 비교하지 않습니다!

    머선 말인고 하면...

     

    print((1, "beta") < (2, "alpha")) // true
    print((3, "alpha") < (3, "beta")) // true
    print((4, "레인스톤") == (4, "레인스톤")) // true

     

    1과 2에서 서로 다른 값을 비교 했기 때문에 beta와 alpha를 비교하지 않습니다. -> 1이 2보다 작은값으로 true

    3과 3은 같은 값이기 때문에 alpha와 beta를 비교합니다. -> alpha가 beta보다 작은값으로 true

    4와 4는 같은 값이기, 레인스톤과 레인스톤도 비교합니다 -> 모두 같은값으로 true

     

    print(("blue", false) < ("purple", true))
    // Binary operator '<' cannot be applied to two '(String, Bool)' operands

     

    boolean과 같이 비교할 수 없는 값은 에러를 뱉어냅니다.

    !

    뭔가 한 개의 포스팅에 다 끝내려고 했는데 내용이 길어졌습니다... 윽

    오늘은 여기까지 알아보고 다음 포스팅에서 삼항연산자부터 다시 살펴보겠습니다.

    반응형

    댓글

Designed by Tistory.