ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swift 정리 #2 연산자
    코딩/Swift 2022. 12. 13. 20:57
    728x90

    용어

    • 단항연산자(Unary operator): 선행연산자(prefix, !b), 후행연산자(postfix, c!)
    • 이항연산자(Binary operator): 2 + 3
    • 삼항연산자(Ternary operator): 삼항조건연산자(ternary conditional operator, a ? b : c)

    Assignment Operator(지정연산자) =

    let b = 10
    var a = 5
    a = b // a is now equal to 10
    let (x, y) = (1, 2) // x is equal to 1, and y is equal to 2
    if x = y {
        // This isn't valid, because x = y doesn't return a value.
    }

    Compound Assignment Operators

    var a = 1
    a += 2 // a = a + 2

    Arithmetic Operators(산술연산자)

    1 + 2       // equals 3
    5 - 3       // equals 2
    2 * 3       // equals 6
    10.0 / 2.5  // equals 4.0

    Remainder Operator %

    9 % 4    // equals 1
    // 9 = (4*2) + 1(remainder)
    
    -9 % 4   // equals -1

    Unary Minus Operator -

    let three = 3
    let minusThree = -three       // minusThree equals -3
    let plusThree = -minusThree   // plusThree equals 3, or "minus minus three"

    Unary Plus Operator +

    let minusSix = -6
    let alsoMinusSix = +minusSix  // alsoMinusSix equals -6

    Comparison Operators

    1 == 1   // true because 1 is equal to 1
    2 != 1   // true because 2 isn't equal to 1
    2 > 1    // true because 2 is greater than 1
    1 < 2    // true because 1 is less than 2
    1 >= 1   // true because 1 is greater than or equal to 1
    2 <= 1   // false because 2 isn't less than or equal to 1
    let name = "world"
    if name == "world" {
        print("hello, world")
    } else {
        print("I'm sorry \(name), but I don't recognize you")
    }
    (1, "zebra") < (2, "apple")   // true because 1 is less than 2; "zebra" and "apple" aren't compared
    (3, "apple") < (3, "bird")    // true because 3 is equal to 3, and "apple" is less than "bird"
    (4, "dog") == (4, "dog")      // true because 4 is equal to 4, and "dog" is equal to "dog"
    ("blue", -1) < ("purple", 1)        // OK, evaluates to true
    ("blue", false) < ("purple", true)  // Error because < can't compare Boolean values

    Ternary Conditional Operator ?:_

    question ? answer1 : answer2
    
    if question {
        answer1 // true
    } else {
        answer2 // false
    }
    let contentHeight = 40
    let hasHeader = true
    let rowHeight = contentHeight + (hasHeader ? 50 : 20) // rowHeight is equal to 90
    let contentHeight = 40
    let hasHeader = true
    let rowHeight: Int
    if hasHeader {
        rowHeight = contentHeight + 50
    } else {
        rowHeight = contentHeight + 20
    } // rowHeight is equal to 90

    Nil-Coalescing Operator ??

    a ?? b
    
    a != nil ? a! : b // a!: unwrapping
    let defaultColorName = "red"
    var userDefinedColorName: String?   // defaults to nil
    
    var colorNameToUse = userDefinedColorName ?? defaultColorName
    // userDefinedColorName is nil, so colorNameToUse is set to the default of "red"
    userDefinedColorName = "green"
    colorNameToUse = userDefinedColorName ?? defaultColorName
    // userDefinedColorName isn't nil, so colorNameToUse is set to "green"

    Range Operators

    Closed Range Operator ...

    for index in 1...5 {
        print("\(index) times 5 is \(index * 5)")
    }
    // 1 times 5 is 5
    // 2 times 5 is 10
    // 3 times 5 is 15
    // 4 times 5 is 20
    // 5 times 5 is 25

    Half-Open Range Operator

    let names = ["Anna", "Alex", "Brian", "Jack"]
    let count = names.count
    for i in 0..<count {
        print("Person \(i + 1) is called \(names[i])")
    }
    // Person 1 is called Anna
    // Person 2 is called Alex
    // Person 3 is called Brian
    // Person 4 is called Jack

    One-Sided Ranges

    for name in names[2...] {
        print(name)
    }
    // Brian
    // Jack
    
    for name in names[...2] {
        print(name)
    }
    // Anna
    // Alex
    // Brian
    for name in names[..<2] {
        print(name)
    }
    // Anna
    // Alex
    let range = ...5
    range.contains(7)   // false
    range.contains(4)   // true
    range.contains(-1)  // true

    Logical Operators

    Logical NOT Operator !

    let allowedEntry = false
    if !allowedEntry {
        print("ACCESS DENIED")
    }
    // Prints "ACCESS DENIED"

    Logical AND Operator &&

    let enteredDoorCode = true
    let passedRetinaScan = false
    if enteredDoorCode && passedRetinaScan {
        print("Welcome!")
    } else {
        print("ACCESS DENIED")
    }
    // Prints "ACCESS DENIED"

    Logical OR Operator ||

    let hasDoorKey = false
    let knowsOverridePassword = true
    if hasDoorKey || knowsOverridePassword {
        print("Welcome!")
    } else {
        print("ACCESS DENIED")
    }
    // Prints "Welcome!"

    Combining Logical Operators

    if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword {
        print("Welcome!")
    } else {
        print("ACCESS DENIED")
    }
    // Prints "Welcome!"

    Explicit Parentheses

    if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {
        print("Welcome!")
    } else {
        print("ACCESS DENIED")
    }
    // Prints "Welcome!"
    728x90

    '코딩 > Swift' 카테고리의 다른 글

    Swift 정리 #6 함수  (0) 2022.12.14
    Swift 정리 #5 Control flow  (1) 2022.12.14
    Swift 정리 #4 컬렉션 타입  (0) 2022.12.14
    Swift 정리 #3 문자열과 문자  (0) 2022.12.13
    Swift 정리 #1 기본  (0) 2022.12.09

    댓글

Designed by Tistory.