๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿฅ– Bread Basics/Swift

Swift ๊ณต์‹ ๋ฌธ์„œ ์ •๋ฆฌ - ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž (Basic Operators)

by BreadDev 2025. 4. 10.
728x90

์•ˆ๋…•ํ•˜์„ธ์š” ์˜ค๋Š˜์€ Swift ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฐ์‚ฐ์ž๋Š” Swift์—์„œ ๊ฐ’์„ ์กฐ์ž‘ํ•˜๊ณ  ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ ์—ฐ์‚ฐ์ž๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์—ฐ์‚ฐ์ž(Operator)๋Š” ๊ฐ’์„ ์ฒดํฌ, ๋ณ€๊ฒฝ, ๋˜๋Š” ๊ฒฐํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐํ˜ธ๋‚˜ ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

  • ๋ง์…ˆ ์—ฐ์‚ฐ์ž(+)๋Š” ๋‘ ์ˆซ์ž๋ฅผ ๋”ํ•ฉ๋‹ˆ๋‹ค: let i = 1 + 2
  • ๋…ผ๋ฆฌ AND ์—ฐ์‚ฐ์ž(&&)๋Š” ๋‘ ๋ถ€์šธ ๊ฐ’์„ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค: if enteredDoorCode && passedRetinaScan

Swift์˜ ์—ฐ์‚ฐ์ž๋Š” C์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  • ๋Œ€์ž… ์—ฐ์‚ฐ์ž(=)๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์•„ ์‹ค์ˆ˜๋กœ ๋น„๊ต ์—ฐ์‚ฐ์ž(==) ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค
  • ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค

๐Ÿ“Œ ์—ฐ์‚ฐ์ž์˜ ์ข…๋ฅ˜ (์ˆ ์–ด)

Swift์˜ ์—ฐ์‚ฐ์ž๋Š” ์ž‘์šฉํ•˜๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ์ˆ˜์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค:

1. ๋‹จํ•ญ ์—ฐ์‚ฐ์ž (Unary Operators)

๋‹จ์ผ ๋Œ€์ƒ์— ์ž‘์šฉํ•˜๋Š” ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค.

  • ๋‹จํ•ญ ์ ‘๋‘์‚ฌ ์—ฐ์‚ฐ์ž: ๋Œ€์ƒ ์•ž์— ์œ„์น˜ (์˜ˆ: -a, !b)
  • ๋‹จํ•ญ ์ ‘๋ฏธ์‚ฌ ์—ฐ์‚ฐ์ž: ๋Œ€์ƒ ๋’ค์— ์œ„์น˜ (์˜ˆ: c!)

2. ์ดํ•ญ ์—ฐ์‚ฐ์ž (Binary Operators)

๋‘ ๋Œ€์ƒ ์‚ฌ์ด์— ์œ„์น˜ํ•˜๋Š” ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค (์˜ˆ: a + b).

3. ์‚ผํ•ญ ์—ฐ์‚ฐ์ž (Ternary Operators)

์„ธ ๋Œ€์ƒ์— ์ž‘์šฉํ•˜๋Š” ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค. Swift์—๋Š” ํ•˜๋‚˜์˜ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž์ธ ์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž(a ? b : c)๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ ๋Œ€์ž… ์—ฐ์‚ฐ์ž (Assignment Operator)

๋Œ€์ž… ์—ฐ์‚ฐ์ž(=)๋Š” ๊ฐ’์„ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค:

let b = 10
var a = 5
a = b  // a๋Š” ์ด์ œ 10

์—ฌ๋Ÿฌ ๊ฐ’์„ ํ•œ ๋ฒˆ์— ๋Œ€์ž…ํ•˜๋Š” ํŠœํ”Œ ๋ถ„ํ•ด๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค:

let (x, y) = (1, 2)
// x๋Š” 1, y๋Š” 2

์ฃผ์˜์ : Swift์˜ ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋Š” C์™€ ๋‹ฌ๋ฆฌ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, if x = y {}์™€ ๊ฐ™์€ ์ฝ”๋“œ๋Š” ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž(==)์™€ ๋Œ€์ž… ์—ฐ์‚ฐ์ž(=)๋ฅผ ํ˜ผ๋™ํ•˜๋Š” ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž (Arithmetic Operators)

Swift๋Š” ๋ชจ๋“  ์ˆซ์ž ํƒ€์ž…์— ๋Œ€ํ•ด ๋„ค ๊ฐ€์ง€ ๊ธฐ๋ณธ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

1 + 2       // ๋ง์…ˆ: 3
5 - 3       // ๋บ„์…ˆ: 2
2 * 3       // ๊ณฑ์…ˆ: 6
10.0 / 2.5  // ๋‚˜๋ˆ—์…ˆ: 4.0

ํŠน์ง•: Swift์˜ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ’ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์—ฐ์‚ฐ์ž(&+, &-, &* ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ง์…ˆ ์—ฐ์‚ฐ์ž๋Š” ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

"hello, " + "world"  // "hello, world"

๐Ÿ“Œ ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ž (Remainder Operator)

๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ž(%)๋Š” ๋‚˜๋ˆ—์…ˆ ํ›„ ๋‚˜๋จธ์ง€๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค:

9 % 4    // 1
-9 % 4   // -1

์ž‘๋™ ๋ฐฉ์‹: a % b๋Š” a = (b ร— ๋ชซ) + ๋‚˜๋จธ์ง€์—์„œ '๋‚˜๋จธ์ง€'๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด์˜ ๋ชจ๋“ˆ๋กœ ์—ฐ์‚ฐ์ž์™€ ๋‹ฌ๋ฆฌ, Swift์—์„œ๋Š” ์Œ์ˆ˜์— ๋Œ€ํ•ด ๋‚˜๋จธ์ง€๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ๋‹จํ•ญ ์—ฐ์‚ฐ์ž (Unary Operators)

๋‹จํ•ญ ๋บ„์…ˆ ์—ฐ์‚ฐ์ž (Unary Minus Operator)

์ˆซ์ž์˜ ๋ถ€ํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค:

let three = 3
let minusThree = -three       // -3
let plusThree = -minusThree   // 3

๋‹จํ•ญ ๋ง์…ˆ ์—ฐ์‚ฐ์ž (Unary Plus Operator)

๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค:

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

์šฉ๋„: ์‹ค์งˆ์ ์ธ ์ž‘์—…์€ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์ง€๋งŒ, ๋‹จํ•ญ ๋บ„์…ˆ๊ณผ์˜ ๋Œ€์นญ์„ฑ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ ๋ณตํ•ฉ ๋Œ€์ž… ์—ฐ์‚ฐ์ž (Compound Assignment Operators)

๋Œ€์ž… ์—ฐ์‚ฐ์ž์™€ ๋‹ค๋ฅธ ์—ฐ์‚ฐ์ž๋ฅผ ๊ฒฐํ•ฉํ•œ ๊ฒƒ์œผ๋กœ, ์ž‘์—…์„ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค:

var a = 1
a += 2  // a = a + 2์™€ ๋™์ผ, a๋Š” ์ด์ œ 3

์ฐธ๊ณ : ๋ณตํ•ฉ ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ let b = a += 2์™€ ๊ฐ™์€ ํ‘œํ˜„์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ๋น„๊ต ์—ฐ์‚ฐ์ž (Comparison Operators)

๋‘ ๊ฐ’์„ ๋น„๊ตํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ถ€์šธ ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค:

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๋ณด๋‹ค ์ž‘๊ธฐ ๋•Œ๋ฌธ)
(3, "apple") < (3, "bird")    // true (3์€ ๊ฐ™์ง€๋งŒ, "apple"์ด "bird"๋ณด๋‹ค ์ž‘์Œ)
(4, "dog") == (4, "dog")      // true (๋ชจ๋“  ์š”์†Œ๊ฐ€ ๊ฐ™์Œ)

ํŠœํ”Œ ๋น„๊ต ๊ทœ์น™: ํŠœํ”Œ์€ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์š”์†Œ์”ฉ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด ๊ทธ ๋น„๊ต ๊ฒฐ๊ณผ๊ฐ€ ์ „์ฒด ํŠœํ”Œ ๋น„๊ต์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž (Ternary Conditional Operator)

์„ธ ๋ถ€๋ถ„์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ํŠน๋ณ„ํ•œ ์—ฐ์‚ฐ์ž๋กœ, ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‘ ํ‘œํ˜„์‹ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค:

let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// rowHeight๋Š” 90

๊ตฌ๋ฌธ: condition ? value1 : value2 ์กฐ๊ฑด์ด true๋ฉด value1์„, false๋ฉด value2๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ Nil-๊ฒฐํ•ฉ ์—ฐ์‚ฐ์ž (Nil-Coalescing Operator)

์˜ต์…”๋„ ๊ฐ’์ด nil์ผ ๋•Œ ๊ธฐ๋ณธ๊ฐ’์„ ์ œ๊ณตํ•˜๋Š” ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค:

let defaultColorName = "red"
var userDefinedColorName: String?   // nil๋กœ ์ดˆ๊ธฐํ™”๋จ

let colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName์ด nil์ด๋ฏ€๋กœ "red"๊ฐ€ ์‚ฌ์šฉ๋จ

๊ตฌ๋ฌธ: a ?? b a๊ฐ€ nil์ด ์•„๋‹ˆ๋ฉด ์–ธ๋ž˜ํ•‘๋œ a๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , nil์ด๋ฉด b๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” a != nil ? a! : b์˜ ์ถ•์•ฝํ˜•์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž (Range Operators)

๋‹ซํžŒ ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž (Closed Range Operator)

for index in 1...5 {
    print("\(index) ร— 5 = \(index * 5)")
}
// 1 ร— 5 = 5๋ถ€ํ„ฐ 5 ร— 5 = 25๊นŒ์ง€ ์ถœ๋ ฅ

๊ตฌ๋ฌธ: a...b a๋ถ€ํ„ฐ b๊นŒ์ง€์˜ ๋ชจ๋“  ๊ฐ’์„ ํฌํ•จํ•˜๋Š” ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค(a์™€ b ๋ชจ๋‘ ํฌํ•จ).

๋ฐ˜-์—ด๋ฆผ ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž (Half-Open Range Operator)

let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
    print("Person \(i + 1): \(names[i])")
}
// Person 1: Anna๋ถ€ํ„ฐ Person 4: Jack๊นŒ์ง€ ์ถœ๋ ฅ

๊ตฌ๋ฌธ: a..<b a๋ถ€ํ„ฐ b-1๊นŒ์ง€์˜ ๊ฐ’์„ ํฌํ•จํ•˜๋Š” ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค(a๋Š” ํฌํ•จํ•˜์ง€๋งŒ b๋Š” ์ œ์™ธ).

๋‹จ-๋ฐฉํ–ฅ ๋ฒ”์œ„ (One-Sided Ranges)

๋ฒ”์œ„์˜ ํ•œ์ชฝ ๋๋งŒ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค:

// 2๋ฒˆ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋๊นŒ์ง€
for name in names[2...] {
    print(name)
}
// Brian, Jack ์ถœ๋ ฅ

// ์ฒ˜์Œ๋ถ€ํ„ฐ 2๋ฒˆ ์ธ๋ฑ์Šค๊นŒ์ง€
for name in names[...2] {
    print(name)
}
// Anna, Alex, Brian ์ถœ๋ ฅ

// ์ฒ˜์Œ๋ถ€ํ„ฐ 2๋ฒˆ ์ธ๋ฑ์Šค ์ „๊นŒ์ง€
for name in names[..<2] {
    print(name)
}
// Anna, Alex ์ถœ๋ ฅ

๊ตฌ๋ฌธ:

  • a...: a๋ถ€ํ„ฐ ๋๊นŒ์ง€์˜ ๋ฒ”์œ„
  • ...b: ์ฒ˜์Œ๋ถ€ํ„ฐ b๊นŒ์ง€์˜ ๋ฒ”์œ„(b ํฌํ•จ)
  • ..<b: ์ฒ˜์Œ๋ถ€ํ„ฐ b-1๊นŒ์ง€์˜ ๋ฒ”์œ„(b ์ œ์™ธ)

๐Ÿ“Œ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž (Logical Operators)

๋ถ€์šธ ๊ฐ’์„ ์กฐ์ž‘ํ•˜๋Š” ์—ฐ์‚ฐ์ž๋กœ, ์„ธ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:

๋…ผ๋ฆฌ์  NOT ์—ฐ์‚ฐ์ž (!)

๋ถ€์šธ ๊ฐ’์„ ๋ฐ˜์ „์‹œํ‚ต๋‹ˆ๋‹ค:

let allowedEntry = false
if !allowedEntry {
    print("์ถœ์ž… ๊ธˆ์ง€")
}
// "์ถœ์ž… ๊ธˆ์ง€" ์ถœ๋ ฅ

๊ธฐ๋Šฅ: true๋ฅผ false๋กœ, false๋ฅผ true๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋…ผ๋ฆฌ์  AND ์—ฐ์‚ฐ์ž (&&)

๋‘ ์กฐ๊ฑด์ด ๋ชจ๋‘ true์ผ ๋•Œ๋งŒ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค:

let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
    print("ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!")
} else {
    print("์ถœ์ž… ๊ธˆ์ง€")
}
// "์ถœ์ž… ๊ธˆ์ง€" ์ถœ๋ ฅ

ํŠน์ง•: ์ฒซ ๋ฒˆ์งธ ๊ฐ’์ด false๋ฉด ๋‘ ๋ฒˆ์งธ ๊ฐ’์€ ํ‰๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋‹จ๋ฝ ํ‰๊ฐ€).

๋…ผ๋ฆฌ์  OR ์—ฐ์‚ฐ์ž (||)

๋‘ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ true๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค:

let hasDoorKey = false
let knowsOverridePassword = true
if hasDoorKey || knowsOverridePassword {
    print("ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!")
} else {
    print("์ถœ์ž… ๊ธˆ์ง€")
}
// "ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!" ์ถœ๋ ฅ

ํŠน์ง•: ์ฒซ ๋ฒˆ์งธ ๊ฐ’์ด true๋ฉด ๋‘ ๋ฒˆ์งธ ๊ฐ’์€ ํ‰๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋‹จ๋ฝ ํ‰๊ฐ€).

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž ๊ฒฐํ•ฉ ๋ฐ ๋ช…์‹œ์  ์†Œ๊ด„ํ˜ธ

์—ฌ๋Ÿฌ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ๊ฒฐํ•ฉํ•ด ๋ณต์žกํ•œ ์กฐ๊ฑด์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {
    print("ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!")
} else {
    print("์ถœ์ž… ๊ธˆ์ง€")
}

๊ฐ€๋…์„ฑ ํ–ฅ์ƒ: ์†Œ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณตํ•ฉ ํ‘œํ˜„์‹์˜ ์˜๋„๋ฅผ ๋ช…ํ™•ํžˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ผ๋ฆฌ์  AND(&&)์™€ OR(||) ์—ฐ์‚ฐ์ž๋Š” ์™ผ์ชฝ๋ถ€ํ„ฐ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.


์—ฐ์‚ฐ์ž๋Š” Swift ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ๋ณธ ์š”์†Œ๋กœ, ๋‹ค์–‘ํ•œ ๊ฐ’ ์กฐ์ž‘์„ ๊ฐ„๊ฒฐํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ํŠนํžˆ Swift๋งŒ์˜ ํŠน์ง•์ธ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฐฉ์ง€, ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž, nil-๊ฒฐํ•ฉ ์—ฐ์‚ฐ์ž ๋“ฑ์€ ๋” ์•ˆ์ „ํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.