๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Dev Blog
iOS/Swift

[Swift] - ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž (Basic Operators)

by ์œ ์ง„์˜ 2023. 12. 3.

์ฐธ๊ณ  ์ž๋ฃŒ

 

๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž (Basic Operators) - Swift

์œ„์˜ ์˜ˆ์ œ ์ฒซ๋ฒˆ์งธ ์ค„์—์„œ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋น„๊ตํ•˜๋Š” ๋™์ž‘์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠœํ”Œ์˜ ๋‹ค๋ฅธ ์–ด๋–ค๊ฐ’๊ณผ ์ƒ๊ด€์—†์ด 1 ์ด 2 ๋ณด๋‹ค ์ž‘๊ธฐ ๋•Œ๋ฌธ์— (1, "zebra") ๋Š” (2, "apple") ๋ณด๋‹ค ์ž‘์Šต๋‹ˆ๋‹ค. ํŠœํ”Œ์˜ ์ฒซ๋ฒˆ

bbiguduk.gitbook.io

Swift ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•œ ์‚ฌ์ดํŠธ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ป ์ฐธ๊ณ  ์ž๋ฃŒ์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์  ํ˜น์€ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค๊ณผ ๋น„๊ตํ–ˆ์„ ๋•Œ ๋‹ค๋ฅธ ์ ๋“ค์„ ์œ„์ฃผ๋กœ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ฐธ๊ณ  ์ž๋ฃŒ ์ด์™ธ์—๋„ ์ถ”๊ฐ€์ ์œผ๋กœ ๊ณต๋ถ€ํ•œ ๋ถ€๋ถ„๋„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.


ํ• ๋‹น ์—ฐ์‚ฐ์ž

let b = 10 // ์ƒ์ˆ˜
var a = 5  // ๋ณ€์ˆ˜
a = b

 

* ํŠœํ”Œ์„ ์ด์šฉํ•ด์„œ ์—ฌ๋Ÿฌ ๊ฐ’์„ ํ•œ ๋ฒˆ์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.

let (a, b, c, d) = ("S", [1, 2, 3, 4], 12, "Hello")

 

* C์–ธ์–ด์™€ ๋‹ค๋ฅด๊ฒŒ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.

if x = y {
    // ํ• ๋‹น ์—ฐ์‚ฐ์ž๊ฐ€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋™๋“ฑ๋น„๊ต ์—ฐ์‚ฐ์ž(==)๊ฐ€ ์“ฐ์—ฌ์•ผ ํ•  ๊ณณ์— ํ• ๋‹น ์—ฐ์‚ฐ์ž๊ฐ€ ์“ฐ์ด๋Š” ๊ฒƒ์„
    // ๋ง‰๊ธฐ ์œ„ํ•ด์„œ๋ผ๊ณ  ํ•œ๋‹ค.
}

 


๋น„๊ต ์—ฐ์‚ฐ์ž

๋น„๊ต์˜ ๊ฒฐ๊ณผ์ธ true ํ˜น์€ false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๊ฐ์ฒด ๋น„๊ต๋ฅผ ์œ„ํ•œ ์‹๋ณ„ ์—ฐ์‚ฐ์ž ===, !== ์™€ ํ˜ผ๋™ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฃผ์˜ํ•˜์ž

 

1 == 1   // true
2 != 1   // true
2 > 1    // true
1 < 2    // true
1 >= 1   // true
2 <= 1   // false

 

* ๊ฐ™์€ ํƒ€์ž…์˜ ๊ฐ’์„ ๊ฐ–๋Š” ๋‘ ๊ฐœ์˜ ํŠœํ”Œ์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠœํ”Œ์˜ ๋น„๊ต๋Š” ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋ค„์ง€๊ณ  ํ•œ ๋ฒˆ์— ํ•œ ๊ฐœ์˜ ๊ฐ’๋งŒ ๋น„๊ตํ•œ๋‹ค.

(1, "zebra") < (2, "apple")   // true, 1์ด 2๋ณด๋‹ค ์ž‘๊ณ ; zebra๊ฐ€ apple์€ ๋น„๊ตํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ
(3, "apple") < (3, "bird")    // true ์™ผ์ชฝ 3์ด ์˜ค๋ฅธ์ชฝ 3๊ณผ ๊ฐ™๊ณ ; apple์€ bird๋ณด๋‹ค ์ž‘๊ธฐ ๋•Œ๋ฌธ
(4, "dog") == (4, "dog")      // true ์™ผ์ชฝ 4๋Š” ์˜ค๋ฅธ์ชฝ 4์™€ ๊ฐ™๊ณ  ์™ผ์ชฝ dog๋Š” ์˜ค๋ฅธ์ชฝ dog์™€ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ
("blue", -1) < ("purple", 1)        // ๋น„๊ต๊ฐ€๋Šฅ, ๊ฒฐ๊ณผ : true
("blue", false) < ("purple", true)  // ์—๋Ÿฌ, Boolean ๊ฐ’์€ < ์—ฐ์‚ฐ์ž๋กœ ๋น„๊ตํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—

 

Swift ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ๋Š” 7๊ฐœ ์š”์†Œ ๋ฏธ๋งŒ์„ ๊ฐ–๋Š” ํŠœํ”Œ๋งŒ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ 7๊ฐœ ํ˜น์€ ๊ทธ ์ด์ƒ์˜ ์š”์†Œ๋ฅผ ๊ฐ–๋Š” ํŠœํ”Œ์„ ๋น„๊ตํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์ง์ ‘ ๋น„๊ต ์—ฐ์‚ฐ์ž๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

 


Nil ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž

nil ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž๋Š” a ?? b ํ˜•ํƒœ๋ฅผ ๊ฐ–๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค. ์˜ต์…”๋„ a๋ฅผ ๋ฒ—๊ฒจ์„œ(unwraps) ๋งŒ์•ฝ a๊ฐ€ nil ์ธ ๊ฒฝ์šฐ b๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ด nil ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž๋Š” ๋‹ค์Œ ์ฝ”๋“œ์˜ ์ถ•์•ฝํ˜•์ž…๋‹ˆ๋‹ค.

a != nil ? a! : b

 

์˜ต์…”๋„ a๊ฐ€ nil์ด ์•„๋‹ˆ๋ฉด a๋ฅผ unwrapํ•œ ๊ฐ’์„ nil์ด๋ฉด b๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค.

let defaultColorName = "red"
var userDefinedColorName: String?   // ์ด ๊ฐ’์€ defaults ๊ฐ’ nil์ž…๋‹ˆ๋‹ค.

var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorNam์ด nil์ด๋ฏ€๋กœ colorNameToUse ๊ฐ’์€ defaultColorName์ธ "red"๊ฐ€ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.\

userDefinedColorName = "green"
colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName๊ฐ€ nil์ด ์•„๋‹ˆ๋ฏ€๋กœ colorNameToUse๋Š” "green"์ด ๋ฉ๋‹ˆ๋‹ค.

 


๋ฒ”์œ„ ์—ฐ์‚ฐ์ž

๋‹ซํžŒ ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž

a...b์˜ ํ˜•ํƒœ๋กœ ๋ฒ”์œ„์˜ ์‹œ์ž‘๊ณผ ๋์ด ์žˆ๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค. for-in loop์— ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค. ์ถ”๊ฐ€๋กœ, Array๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์ค„ ๋•Œ์—๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

for index in 1...5 {
    print("\(index) times 5 is \(index * 5)")
}

let array: [Int] = Array(1...5)
//[1, 2, 3, 4, 5]

 

๋ฐ˜ ๋‹ซํžŒ ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž

a..<b์˜ ํ˜•ํƒœ๋กœ a๋ถ€ํ„ฐ b๋ณด๋‹ค ์ž‘์„ ๋•Œ๊นŒ์ง€์˜ ๋ฒ”์œ„๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. ์ฆ‰, a๋ถ€ํ„ฐ b-1๊นŒ์ง€ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค. ๋ณดํ†ต ๋ฐฐ์—ด์ด (๋ฐฐ์—ด์˜ ํฌ๊ธฐ - 1)์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฐ˜ ๋‹ซํžŒ ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž๋Š” ๋ฐฐ์—ด์„ ๋‹ค๋ฃจ๋Š”๋ฐ ์œ ์šฉํ•˜๋‹ค.

let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count

for i in 0..<count {
    print("Person \(i + 1) is called \(names[i])")
}

 

๋‹จ๋ฐฉํ–ฅ ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž

a...ํ˜น์€...a์˜ ํ˜•ํƒœ๋กœ ๋ฒ”์œ„์˜ ์‹œ์ž‘ ํ˜น์€ ๋๋งŒ ์ง€์ •ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž์ด๋‹ค. ์ง€์ •ํ•œ ์‹œ์ž‘ ๊ฐ’ ํ˜น์€ ๋ ๊ฐ’์€ ๋ฒ”์œ„์— ํฌํ•จ๋œ๋‹ค. ๋ฐ˜ ๋‹ซํžŒ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„ค์ • ๊ฐ’์ด ๋ฒ”์œ„์— ํฌํ•จ๋˜์ง€ ์•Š๊ฒŒ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

let names = ["Anna", "Alex", "Brian", "Jack"]

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

 

'iOS > Swift' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Swift] ARC  (1) 2024.05.24
[Swift] Extension  (1) 2024.05.20
[Swift] - ์ฝœ๋ ‰์…˜ ํƒ€์ž… (Collection Types)  (0) 2023.12.03
[Swift] - ๋ฌธ์ž์—ด๊ณผ ๋ฌธ์ž (Strings and Characters)  (0) 2023.12.03
[Swift] ๊ธฐ๋ณธ (The Basics)  (0) 2023.12.03

๋Œ“๊ธ€