swiftλ₯Ό μ¬μ©νλ©° μμ£Ό λ§μ΄ μ°λκ² ν΄λ‘μ μΈ κ² κ°κ³ ,,
κ°μΈμ μΈ μκ°μΌλ‘λ μ€μννΈμ λͺ¨λ λ¬Έλ²?μ€μ κ°μ₯ μ€μνκ² λ°λ‘ ν΄λ‘μ λΌκ³ μκ°νλ€,,!!
νμ§λ§ μμ§ μ νν μ΄ν΄κ° λΆμ‘±ν κ² κ°λ€.γ
λ°λΌμ μ€λμ ν΄λ‘μ μ λν΄ μμΈν 곡λΆν΄λ³΄λ €κ³ νλ€.
π ν΄λ‘μ (Closure)
ν΄λ‘μ λ λ€λ₯Έ μΈμ΄λ€μ 'λλ€'μ λΉμ·ν κ°λ μΌλ‘,
μΌμ κΈ°λ₯μ νλ μ½λλ₯Ό νλμ λΈλ‘μΌλ‘ λͺ¨μλμ κ²μ μλ―Ένλ€.
μ΄ μκΈ°λ₯Ό λ€μΌλ©΄ ν¨μμλ?νκ³ μκ°νκ² λλλ°, ν¨μλ ν΄λ‘μ μ μΌμ’ μ΄λ€.
π ν΄λ‘μ μλ ν¬κ² μ΄ μΈ κ°μ§ ννκ° μλ€.
- μ΄λ¦μ΄ μμΌλ©΄μ μ΄λ€ κ°λ νλνμ§ μμ - μ μν¨μμ νν
- μ΄λ¦μ΄ μμΌλ©΄μ λ€λ₯Έ ν¨μμ λ΄λΆ κ°μ νλν μ μμ - μ€μ²©λ ν¨μμ νν
- μ΄λ¦μ΄ μκ³ μΆμ½ λ¬Έλ²μΌλ‘ μ°μ¬μ§λ©° μ£Όλ³ λ¬Έλ§₯μ λ°λΌ κ°μ νλν μ μμ - ν΄λ‘μ νν
μμ ν΄λ‘μ μΈ κ°μ§ νν μ€, ν¨μλ μ μκ³ μκΈ° λλ¬Έμ
μ€λμ ν΄λ‘μ ννμ λν΄ μμΈνκ² ν λ² μμ보μ!~~
π ν΄λ‘μ νν
μλλ ν΄λ‘μ μ ν΅μμ μΈ κΈ°λ³Έ ννμ΄λ€.
{ (맀κ°λ³μλ€) -> λ°ν νμ
in μ€ν μ½λ }
μμμ λ§νλ― μ°λ¦¬κ° μλ ν¨μμμ μ΄λ¦λ§ λΉ μ§ ννμ²λΌ 보μμ μ μ μλ€.
π sorted ν¨μλ₯Ό μλ‘ λ€μ΄ ν΄λ‘μ ννλ₯Ό νμΈν΄λ³΄μ.
var arr = [1, 3, 2, 5, 4]
arr.sorted(by: {(first: Int, second: Int) -> Bool in return first > second })
/* μ°Έκ³ - μ ν κ°λ°μ λ¬Έμμμ μ 곡ν sorted ν¨μ μν
func sorted(by areInIncreasingOrder: ((key: Key, value: Value),
(key: Key, value: Value)) -> Bool) -> [(key: Key, value: Value)]
*/
μμμ λ³Έ ν΄λ‘μ μ κΈ°λ³Έ ννμ λΆν©νλ ν΄λ‘μ λ₯Ό μ¬μ©ν¨μ νμΈν μ μλ€!
νμ§λ§ μ€μννΈλ₯Ό μ’ μ¬μ©ν΄ λ³Έ μ¬λμ΄λΌλ©΄ μκ² μ§λ§,, sorted ν¨μλ ν¨~μ¬ κ°λ¨νκ² μ¬μ© κ°λ₯νλ€.
arr.sorted(by: <)
μ΄λ κ²,,! μ¬μ©νλ κ²μ΄ λ³΄ν΅ λ§μ΄ μ°λ λ°©λ²μ΄λ€.
sortedμ μνμ μ§μΌ μ΄ μ½λμ λΉν΄ μμ£Ό κ°κ²°ν΄μ§ λͺ¨μ΅μΈλ°,
λλ체 μ΄λ€ λ°©λ²μΌλ‘ λλΌλ§ν±νκ² μ½λλ₯Ό μ€μ΄κ³ ,, κ°λ μ±κΉμ§ μ‘μμκΉ?
μ¬κΈ°μ μ°λ¦¬λ ν΄λ‘μ λ₯Ό μΌλ§λ λ€μνκ² ννν μ μλμ§, μμλ΄μΌ ν νμκ° μλ€. !!
- νν ν΄λ‘μ λ¬Έλ²
- 맀κ°λ³μμ λ¦¬ν΄ νμ μλ΅
- μΆμ½λ μ λ¬μΈμ μ΄λ¦
- μμμ λ°ν νν
- μ°μ°μ ν¨μ μ¬μ©
μμ λ΄μ©λ€μ²λΌ, ν΄λ‘μ λ μ½λλ₯Ό κ°κ²°νκ² ννν μ μλ λ€μν λ°©λ²μ μ 곡νλ€.
μ°λ¦¬κ° sorted(by: <) μ΄λ° λ°©μμΌλ‘ sorted ν¨μλ₯Ό λ무λλ μ½κ² μ¬μ©κ°λ₯ν κ²λ μ΄λ° μ΄μ μμ λμ¨λ€.
κ·ΈλΌ μ΄μ μμ νλͺ©λ€μ νλ μ© μ΄ν΄λ³΄λ©° ν΄λ‘μ μ λ€μν μ¬μ© λ°©λ²μ λν΄ κ³΅λΆν΄λ³΄μ.
1. νν ν΄λ‘μ λ¬Έλ²μ μ¬μ©ν μ μλ€.
ν΄λ‘μ κ° κΈΈμ΄μ§κ±°λ, κ°λ μ±μ΄ λ¨μ΄μ§ λ μ¬μ©νλ λ°©μμ΄λ€.
μμμ μλ‘ λ sorted ν¨μμ μμ±μ 보면, ( )μμ ν΄λ‘μ { }κ° λ€μ΄μλ λͺ¨μ΅μ΄λ€.
νμ§λ§ { }κ° κΈΈμ΄μ§λ©΄ μ½λμ κ°λ μ±μ΄ λ¨μ΄μ§ μ μκΈ° λλ¬Έμ ν΄λ‘μ λ₯Ό λ°λ‘ λΉΌμ€ μ μλ€.
arr.sorted() {(first: Int, second: Int) -> Bool in return first > second}
κ·Έλ¦¬κ³ μ¬κΈ°μ μκ΄νΈκΉμ§λ μλ΅μ΄ κ°λ₯νλ€.
arr.sorted {(first: Int, second: Int) -> Bool in return first > second}
2. 맀κ°λ³μμ λ¦¬ν΄ νμ μλ΅
ν΄λ‘μ λ 맀κ°λ³μμ λ¦¬ν΄ κ°μ νμ μ λ¬Έλ§₯μ ν΅ν΄ μ μΆν μ μλ€.
λ°λΌμ 맀κ°λ³μμ λ¦¬ν΄ κ°μ μλ΅νμ¬ μμ±ν μ μλ€.
μ μΆ ν μ μλ μ΄μ λ
μ΄μ°¨νΌ ν΄λ‘μ λ λ©μλμμ μꡬνλ ννλ‘ μ λ¬ν΄μΌνλ€.
(λ©μλμμ String κ°μ λ°μμΌ νλ©΄ StringμΌλ‘,, Boolμ΄λ©΄ Bool κ°μΌλ‘,,)
λ°λΌμ μ λ¬μΈμλ‘ μ λ¬ν ν΄λ‘μ λ μ΄λ―Έ μ ν©ν νμ μ΄λΌλ κ²μΌλ‘ μ μΆν μ μλ€!
sorted ν¨μ ννμμ 맀κ°λ³μ, λ¦¬ν΄ νμ μ μλ΅νμ¬ μμ±νλ€.
arr.sorted() {(first, second) in return first > second}
3. μΆμ½λ μ λ¬μΈμ μ΄λ¦
μμμλ firstμ secondλ‘ λ§€κ°λ³μμ μ΄λ¦μ μ§μ νλ€.
νμ§λ§ ν΄λ‘μ μμλ κ΅³μ΄ μ΄λ¦μ μ ν νμ μμ΄, 첫 λ²μ§Έ μΈμλΆν° $0, $1, $2, ... λ‘ ννμ΄ κ°λ₯νλ€.
λ¨μΆ μΈμ μ΄λ¦μ μ¬μ©νλ©΄ 맀κ°λ³μλ₯Ό μ μΈνκ³ ,
λ€μ μ€ν μ½λλ₯Ό ꡬλΆνκΈ° μν΄ μ¬μ©νλ in ν€μλλ νμ μμ΄μ§λ€.!!
sorted ν¨μμ ν΄λ‘μ ννμμ λ¨μΆ μΈμ μ΄λ¦μ μ¬μ©ν΄μ£Όμλ€.
arr.sorted{return $0 > $1}
4. μμμ λ°ν νν
ν΄λ‘μ κ° λ°ν κ°μ κ°μ§λ©°, ν΄λ‘μ λ΄λΆμ μ€νλ¬Έμ΄ λ± ν μ€μ΄λΌλ©΄
μμμ μΌλ‘ κ·Έ μ€νλ¬Έμ λ°νκ°μΌλ‘ μ¬μ©ν μ μλ€.
π μ€νλ¬Έμ΄ κ³§ λ°ν κ°! return ν€μλ μλ΅ κ°λ₯
μλλ return ν€μλλ₯Ό μλ΅ν sorted ν¨μμ λͺ¨μ΅μ΄λ€.
arr.sorted{$0 > $1}
5. μ°μ°μ ν¨μ μ¬μ©
μμ returnλ¬Έμ μλ΅ν ν΄λ‘μ ννλ₯Ό 보면, λ¨μν μ λ€ μΈμμ ν¬κΈ°λ₯Ό λΉκ΅νλ κ² λΏμ΄λ€.
λ°λΌμ μ΄λ΄ λλ μ°μ°μλ₯Ό ν΄λ‘μ λ‘μ μ¬μ©ν μ μλ€.
(μ€μννΈμμλ μ°μ°μλ μΌμ’ μ ν¨μμ΄κΈ° λλ¬Έμ!)
μΈλΌμΈ ν΄λ‘μ λ₯Ό μ¬μ©ν sorted ν¨μμ μ°μ°μλ₯Ό ν΄λ‘μ λ‘ μ¬μ©ν΄μ£Όμλ€.
arr.sorted(by: >)
μ¬κΈ°κΉμ§ ν΄λ‘μ μ νΉμ±μ μ¬μ©ν΄ μ½λλ₯Ό κ°κ²°ν λ°κΏκ°λ€λ³΄λ λμ λκ² μ§§μμ§ λͺ¨μ΅μ λ³Ό μ μλ€!
λνλ‘ sortedλ₯Ό μ¬μ©νμ§λ§, μ΄ μΈμλ ν΄λ‘μ λ μ€μννΈμμ μ λ§ λ€μν μ°μ΄λ μ€μν μμλ€.
μμ λ΄μ©λ€μ 볡μ΅νλ©° ν΄λ‘μ λ₯Ό μμ λ‘κ² νμ©ν μ μλλ‘ μ°μ΅νμ.
ν΄λ‘μ λ λ³μλ μμκ° μ μΈλ μμΉμμ
μ°Έμ‘°λ₯Ό νλνκ³ μ μ₯ν μ μλ κΈ°λ₯λ μ§λλ€.
π μ΄ λ΄μ©μ λν΄μλ λ€μ κΈμμ μκ°νκ² λ€.
π μ 리 π
ν΄λ‘μ λ μ΄λ¦ μλ ν¨μμ κ°μ λͺ¨μμΌλ‘(ν¨μλ ν΄λ‘μ μ μΌμ’ ), { }λ₯Ό μ΄μ©ν΄ νννλ€.
λ€μν νμ© λ°©λ²μ μ 곡νλ―λ‘, λ³΄λ€ κ°λ μ±μ λμ΄λ μ½λμ μμ±μ λλλ€.
μ€μννΈμμ λ무λλ λ§μ΄ μ¬μ©λλ κ²μΌλ‘,
ν΄λ‘μ λ₯Ό μ λλ‘ μ΄ν΄νλ κ²μ΄μΌλ§λ‘ λ°λ‘ μ€μννΈλ₯Ό μ΄ν΄νλ κ²!
μ°Έκ³
- π μ€μννΈ νλ‘κ·Έλλ°
- https://zeddios.tistory.com/14
- https://medium.com/@jgj455/%EC%98%A4%EB%8A%98%EC%9D%98-swift-%EC%83%81%EC%8B%9D-closure-aa401f76b7ce
'3οΈβ£ Swift > Swift μ 리' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] splitκ³Ό componentsμ μ°¨μ΄μ (0) | 2021.08.08 |
---|---|
[Swift] λ°°μ΄ κ΄λ ¨ ν¨μ μ΄μ 리! (2) | 2021.07.15 |
[Swift] μΌκΈ κ°μ²΄ (First-class Citizen) μ 리 (2) | 2021.06.24 |
[Swift] sorted, joined ν¨μ μ¬μ© μ μ£Όμ μ¬ν! (0) | 2021.06.13 |
[Swift] μ΅μ λ μΆμΆ (κ°μ μΆμΆ, μ΅μ λ λ°μΈλ©, μ΅μ λ 체μ΄λ) μ 리 (4) | 2021.06.12 |
λκΈ