์ .. ์ฌ์ค ์ค๋ ๋ธ๊พธํ์ด์..ใ ใ ใ
๋ด์ผ๋ถํฐ ๋ค์ ์ด์ฌํ ๋ฌ๋ ค๋ณผ๊ฒ์..๐
Swift ๋ฌธ๋ฒ์ ์ฒ์๋ถํฐ ๋ค์ ๋ณด๋ ๊ถ๊ธํ๊ฒ ๋ง๋๋ผ๊ตฌ์!
( ํน๊ฐ์์ ๋ค์ ๋๋ก ๋ญ๋ ๋ฌผ์ํ ์ด์ฌํ ์ฐ์ด๋ณด๋ ค๊ณ ํจ..ใ ใ )
sort ์ sorted์ ์ฐจ์ด
์ ๊ฐ sortํจ์์ sorted ํจ์๊ฐ ์๋ค๋ ๊ฒ์ ์์๋๋ฐ, ๊ทธ ์ฐจ์ด๋ฅผ ์๊ณ ์์ง๋ ์์๋๋ผ๊ตฌ์.
Sort
์ฐ์ sort์ ๋ํด์ ์์๋ณด์๋ฉด,
sort๋ List ๋ผ๋ ํด๋์ค ๋ด์ ๋ฉ์๋์ ๋๋ค.
sort ๋ฉ์๋
ํจ์๋ฅผ ์คํํ์ฌ ๋ฐํํ๋ ๊ฐ์ None์ผ๋ก ์์ด์!
Sorted
๊ทธ๋ ๋ค๋ฉด sorted๋?!?!
sorted๋ iterable ๊ฐ์ฒด๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ๋ฉ์๋์ ๋๋ค.
sorted ๋ฉ์๋
list, tuple, string, ์ฝ๋ ์ ( ๋์ ๋๋ฆฌ, ์งํฉ, .. ), ... ๋ฑ์์ ์ฌ์ฉํ ์ ์์ด์.
ํจ์๋ฅผ ์คํํ์ฌ ๋ฐํํ๋ ๊ฐ์ List๋ก ๋ฐฐ์ด์ด ๋ฐํ์ด ๋ฉ๋๋ค.
์ ๋ฆฌํด๋ณด์๋ฉด sort์ sorted์ ์ฐจ์ด์ ์ ํฌ๊ฒ ๋๊ฐ์ง๋ก ๋๋์ด์!
1. sort๋ List์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ, sorted๋ List, tuple, ์ปฌ๋ ์ ๋ฑ๋ฑ ๋ค์ํ ํ์ ์์ ์ฌ์ฉ ๊ฐ๋ฅ
2. sort๋ ์๋ฌด๊ฒ๋ ๋ฐํํ์ง ์์์ ์ ๋ ฌํ ๊ฐ์ ์ด๋ค ๊ฐ์ ๋์ ํ์ง ๋ชปํฉ๋๋ค. ๊ทธ๋ฌ๋ sort ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์๊ธฐ ์์ ์ ๋ฐฐ์ด์ด ์ ๋ ฌ๋ ์ฑ๋ก ๋ฐ๋์ฃ . ๊ทธ๋ฌ๋ sorted๋ ์ ๋ ฌ๋ ๋ฐฐ์ด์ ๋ฐํํ์ฌ ๋ค๋ฅธ ๊ฐ์ ๋์ ์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ ๊ธฐ์ ์๊ธฐ ์์ ์ ๋ฐฐ์ด์ ๋ณ๊ฒฝ๋์ง ์๊ณ sorted๊ฐ ๋ ๋ฐฐ์ด์ ๋ฐํํ๋ ๊ฑฐ์ฃ .
๊ทธ๋ผ ์ด๋ค ์ํฉ์ ๋ญ๋ฅผ ๋์ ํด์ผ ํ ๊น์?
sorted๋ ๊ฐ์ฒด๋ฅผ ๋ฐ๊ณ ๋ฐํ๊ฐ์ด ์๊ธฐ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์์ด ๋ง์์ง๋ค๋ฉด, sort๋ณด๋ค ๋๋ฆฝ๋๋ค. ์ด๋ฅผ ๊ฐ์ํด์ ์๋์ ๊ฐ์ ์ ํ์์์ด ์ ๋ ฌ๋ ๊ฐ๋ง์ ์ถ๋ ค๋ด๊ณ ์ถ๋ค๋ฉด sort๋ฅผ ์ฐ๋ ๊ฒ ๋ ์ข์๋ณด์ฌ์!
removeLast์ popLast์ ์ฐจ์ด์
์ด์ ํ์ ์คํ์ ์ดํด๋ณด๋ค๊ฐ ํ๋ removeLast๋ก ๋ฐฐ์ด์ ๊ฐ์ ์์ ๊ณ , ์คํ์ popLast๋ก ๋ฐฐ์ด์ ๊ฐ์ ์์ ๋ ๊ฒ์ ์๊ฒ๋์์ต๋๋ค.
๋์ด ๋๊ฐ์ ๊ณผ์ ์ ์ํํ๋ ๋ฐ ์ ๋ค๋ฅธ ํจ์๋ฅผ ์ฌ์ฉํ์ง?! ๋ผ๋ ์๋ฌธ์ ์ด ์๊ฒผ์ด์.
removeLast
removeLast๋ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ฅผ ๋ฐํํ๊ณ , ๋ฐฐ์ด์์ ๋ง์ง๋ง ์์๋ฅผ ์ญ์ ์ํค๋ ํจ์์ ๋๋ค.
removeLast ๋ฉ์๋
popLast
popLast๋ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ฅผ ๋ฐํํ๊ณ , ๋ฐฐ์ด์์ ๋ง์ง๋ง ์์๋ฅผ ์ญ์ ์ํค๋ ํจ์์ ๋๋ค.
popLast ๋ฉ์๋
๋ค?!? ๋๊ฐ์๊ฑฐ ์๋๋๊ตฌ์?!
์๋๋๋ค. ๋์ ๋ฐํ๊ฐ์ด ๋ฌ๋ผ์.
removeLast๋ ํ์ค๊ฐ์ ๋ฐํํ๋ ๋ฐ๋ฉด์ popLast๋ ์ต์ ๋๊ฐ์ ๋ฐํํฉ๋๋ค.
var a = [1,2,3,4,5,6,7]
var b = [1,2,3,4,5,6,7]
var removeA = a.removeLast()
var removeB = b.popLast()
print(removeA) // 7
print(removeB) // Optional(7)
print(a) // [1, 2, 3, 4, 5, 6]
print(b) // [1, 2, 3, 4, 5, 6]
์ ๊ตณ์ด ์ด๋ ๊ฒ ๋ง๋ค์์ง? ๋ผ๊ณ ์๊ฐํ๋ค๋ฉด ์ ์๊ฐ์๋ ์ด ๋ถ๋ถ์ผ ๊ฒ ๊ฐ์ต๋๋ค.
a = []
b = []
//removeA = a.removeLast() // ๐จ Error
removeB = b.popLast()
print(removeB) // nil
๋ ๊ฐ์ ๋ฐฐ์ด์ด ๋น์ด์์ ๋,
removeLast์ ํจ์๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ์๋ฌ๊ฐ ๋ ๊ฒ์ ๋๋ค.
๊ฐ์ด ์๋ฌด๊ฒ๋ ์๊ธฐ ๋๋ฌธ์ด์ฃ .
ํ์ง๋ง, popLast์ ํจ์๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, nil๊ฐ์ ๋ฐํํ์ฑ ์ปดํ์ผ์๋ฌ๊ฐ ๋์ง ์์๊ฑฐ์์.
๊ทธ๋์ ๋ฐฐ์ด์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ๊น์ง๋ฅผ ๊ฐ์ํด์ผํ๋ค๋ฉด popLast ํจ์๋ฅผ ์ฌ์ฉํ๋๊ฒ ์ข๊ฒ ์ฃ ?!
removeFirst์ popFirst๋ ๊ฐ์ ๋งฅ๋ฝ์ด์์!