🍎 Apple/Swift

[Swift] dropFirst()와 removeFirst()의 차이

JINiOS 2023. 9. 1. 14:59
728x90

dropFirst(_:)

μ§€μ •λœ 개수의 초기 μš”μ†Œλ₯Ό μ œμ™Έν•˜κ³ , λͺ¨λ‘ ν¬ν•¨λœ μ„œλΈŒμ‹œν€€μŠ€λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

func dropFirst(_ k: [Int](<https://developer.apple.com/documentation/swift/int>) = 1) -> Self.SubSequence

k

μ»¬λ ‰μ…˜ μ‹œμž‘ λΆ€λΆ„μ—μ„œ μ‚­μ œν•  μš”μ†Œμ˜ 수. kλŠ” 0보닀 ν¬κ±°λ‚˜ κ°™μ•„μ•Ό ν•©λ‹ˆλ‹€. 기본은 1μž…λ‹ˆλ‹€.

 

removeFirst(_:)

μ»¬λ ‰μ…˜μ˜ μ‹œμž‘ λΆ€λΆ„μ—μ„œ μ§€μ •ν•œ 수의 μš”μ†Œλ₯Ό μ œκ±°ν•©λ‹ˆλ‹€.

mutating func removeFirst(_ k: Int)

k

μ»¬λ ‰μ…˜μ—μ„œ μ œκ±°ν•  μš”μ†Œμ˜ 수. kλŠ” 0 이상이어야 ν•˜λ©° μ»¬λ ‰μ…˜μ˜ μš”μ†Œμ˜ 수λ₯Ό μ΄ˆκ³Όν•  수 μ—†μŠ΅λ‹ˆλ‹€.

 

μ£Όμš” 차이점

 μ΄ 두 λ©”μ„œλ“œμ˜ μ£Όμš” 차이점은 dropFirstλŠ” μš”μ†Œλ₯Ό μ œκ±°ν•œ μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ν•˜λ©΄μ„œ 원본 배열은 λ³€κ²½λ˜μ§€ μ•ŠλŠ” 반면, removeFirstλŠ” 첫 번째 μš”μ†Œλ₯Ό μ œκ±°ν•˜κ³  ν•΄λ‹Ή μš”μ†Œλ₯Ό λ°˜ν™˜ν•˜λ©΄μ„œ 원본 배열을 λ³€κ²½ν•©λ‹ˆλ‹€.

 πŸ’¬ 이 두 λ©”μ„œλ“œμ˜ μ£Όμš” 차이점은 dropFirstλŠ” μš”μ†Œλ₯Ό μ œκ±°ν•œ μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ν•˜λ©΄μ„œ 원본 배열은 λ³€κ²½λ˜μ§€ μ•ŠλŠ” 반면, removeFirstλŠ” 첫 번째 μš”μ†Œλ₯Ό μ œκ±°ν•˜κ³  ν•΄λ‹Ή μš”μ†Œλ₯Ό λ°˜ν™˜ν•˜λ©΄μ„œ 원본 배열을 λ³€κ²½ν•©λ‹ˆλ‹€.

 

μ½”λ“œλ‘œ μ•Œμ•„λ³΄κΈ°

//dropFirst() 적용
var arr: [Int] = [1, 2, 3, 4]

print(arr.dropFirst()) /// [2, 3, 4] >> 첫번째 값을 μ œμ™Έν•œ 값듀을 λ°˜ν™˜
print(arr.dropFirst(2))/// [3, 4] >> 1~2번째 값을 μ œμ™Έν•œ 값듀을 λ°˜ν™˜
print(arr.dropFirst(5))/// [] νŒŒλΌλ―Έν„° 값이 μ»¬λ ‰μ…˜ μš”μ†Œμ˜ 수λ₯Ό λ²—μ–΄λ‚˜λ©΄ 빈 λ°°μ—΄ λ°˜ν™˜

arr.dropFirst()
print(arr) /// [1, 2, 3, 4] >> dropFirst()λ₯Ό 해도 원본값이 λ°”λ€Œμ§€ μ•ŠμŒ

let arraySubSequence = arr.dropFirst()
print(arraySubSequence) /// [2, 3, 4] >> Array<Int>.SubSequence νƒ€μž…μ΄ μ €μž₯됨

//μ„œλΈŒμ‹œν€€μŠ€λ₯Ό λ°°μ—΄λ‘œ μ €μž₯ν•˜λŠ” 법
arr = Array(arr.dropFirst())
print(arr) /// [2, 3, 4] >> Array<Int> νƒ€μž…μœΌλ‘œ μ €μž₯됨, Array둜 κ°μ‹Έμ€˜μ•Ό 기쑴의 arr배열에 μ €μž₯ κ°€λŠ₯

//removeFirst() 적용
arr = [1, 2, 3, 4, 32,23]

print(arr.removeFirst()) /// 1 >> μ‚­μ œλœ μš”μ†Œκ°€ λ°˜ν™˜λ¨
print(arr.removeFirst(1)) /// () >>  좜λ ₯은 ()둜 되며, 원본값에 μ‚­μ œκ°€ 반영됨
//print(arr.removeFirst(9)) /// νŒŒλΌλ―Έν„° 값이 μ»¬λ ‰μ…˜ μš”μ†Œμ˜ 수λ₯Ό λ²—μ–΄λ‚˜λ©΄ μ—λŸ¬
arr.removeFirst()
print(arr) /// [4] >> 원본값에 μ‚­μ œκ°€ 반영됨
728x90