Bibi's DevLog πŸ€“πŸŽ

[Swift / Array] enumerated() - 배열을 μ—΄κ±°ν•˜λŠ” μ‹œν€€μŠ€ λ§Œλ“€κΈ° λ³Έλ¬Έ

πŸ“±πŸŽ iOS/🍏 Apple Developer Documentation

[Swift / Array] enumerated() - 배열을 μ—΄κ±°ν•˜λŠ” μ‹œν€€μŠ€ λ§Œλ“€κΈ°

λΉ„λΉ„ bibi 2022. 9. 23. 21:44

Apple Developer Documentation

enumerate μ—΄κ±°ν•˜λ‹€

(n, x)쌍의 μ‹œν€€μŠ€λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

  • n은 0λΆ€ν„° μ‹œμž‘ν•˜λŠ” 연속적인 integerλ₯Ό μ˜λ―Έν•˜λ©°,
  • xλŠ” μ‹œν€€μŠ€μ˜ μš”μ†Œλ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

μ„ μ–Έ

func enumerated() -> EnumeratedSequence<Self>

리턴값

μ‹œν€€μŠ€λ₯Ό μ—΄κ±°ν•˜λŠ” 쌍의 μ‹œν€€μŠ€λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

μ‹œκ°„λ³΅μž‘λ„ : O(1)

μ„€λͺ…

이 μ˜ˆμ‹œλŠ” “Swift” λΌλŠ” λ¬Έμžμ—΄μ˜ 문자λ₯Ό μ—΄κ±°ν•˜κ³ , λ¬Έμžμ—΄ μ†μ˜ 각 문자λ₯Ό κ·Έ μžλ¦¬μ™€ ν•¨κ»˜ 좜λ ₯ν•©λ‹ˆλ‹€.

for (n, c) in "Swift".enumerated() {
    print("\(n): '\(c)'")
}
// Prints "0: 'S'"
// Prints "1: 'w'"
// Prints "2: 'i'"
// Prints "3: 'f'"
// Prints "4: 't'"

μ»¬λ ‰μ…˜μ„ μ—΄κ±°ν•  λ•Œ, 각 쌍의 μ •μˆ˜λΆ€λŠ” μ—΄κ±°ν˜•μ˜ counterμ΄μ§€λ§Œ, λ°˜λ“œμ‹œ μŒμ„ μ΄λ£¨λŠ” κ°’μ˜ 인덱슀인 것은 μ•„λ‹™λ‹ˆλ‹€. μ΄λŸ¬ν•œ counterλŠ” 0λΆ€ν„° μ‹œμž‘ν•˜κ³ , μ •μˆ˜λ‘œ μΈλ±μ‹±λ˜λŠ” μ»¬λ ‰μ…˜μ˜ μΈμŠ€ν„΄μŠ€μ— λŒ€ν•΄μ„œλ§Œ 인덱슀둜 μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€(예λ₯Ό λ“€μ–΄ Arrayλ‚˜ ContiguousArray같은). λ‹€λ₯Έ μ»¬λ ‰μ…˜μ— λŒ€ν•œ counterλŠ” out of rangeκ°€ λ°œμƒν•˜κ±°λ‚˜ 인덱슀둜 μ“°λ € ν•  λ•Œ νƒ€μž…μ΄ λΆ€μ μ ˆν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ»¬λ ‰μ…˜μ˜ μΈλ±μŠ€λ“€κ³Ό ν•¨κ»˜ μš”μ†Œλ“€μ„ μˆœνšŒν•˜κ³  μ‹Άλ‹€λ©΄, zip(_:_:) ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ‹­μ‹œμ˜€.

μ•„λž˜ μ˜ˆμ‹œλŠ” 5자 μ΄ν•˜μ˜ μ΄λ¦„μ˜ 인덱슀λ₯Ό μ €μž₯ν•˜λŠ” 리슀트λ₯Ό κ΅¬μ„±ν•˜λ©΄μ„œ, Set의 μš”μ†Œμ™€ μΈλ±μŠ€λ“€μ„ μˆœνšŒν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

let names: Set = ["Sofia", "Camilla", "Martina", "Mateo", "Nicolás"]
var shorterIndices: [Set<String>.Index] = []
for (i, name) in zip(names.indices, names) {
    if name.count <= 5 {
        shorterIndices.append(i)
    }
}

이제 shorterIndices 배열이 names Set의 짧은 μ΄λ¦„μ˜ μΈλ±μŠ€λ“€μ„ 가지고 있기 λ•Œλ¬Έμ—, set의 μš”μ†Œμ— μ ‘κ·Όν•˜κΈ° μœ„ν•΄ κ·Έ μΈλ±μŠ€λ“€μ„ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

for i in shorterIndices {
    print(names[i])
}
// Prints "Sofia"
// Prints "Mateo"