π₯ Collections and Generators
π¨βπ» Contents
- Collections
- Generators
- The iterable protocol
- Collections
GeneratorsThe iterable protocol
Collections
νλ‘κ·Έλλ° μΈμ΄κ° μ 곡νλ
κ°μ λ΄μ μ μλ 컨ν μ΄λ
λ©μ΄μ νλ‘κ·Έλλ° μΈμ΄μλ
μ¬λ¬κ°μ§ λ°μ΄ν° 컬λ μ λ€μ΄ μ‘΄μ¬νλ€.
- list, tuple, dictionaries - Python
- ArrayList, HashMap, HashSet, Queue, Stack ... - Java
- hashes, arrays - ruby
κ·ΈλΌ μλ°μ€ν¬λ¦½νΈμμλ..?
ES5 κΉμ§λ
Objects
Arrays
ES6 μμλ?
Map
Set
WeakMap
WeakSet
μ ES6μ 컬λ μ μ΄ λμμκΉμ?
Objectμ Arrayλ³΄λ€ μ΅μ νλ ꡬν체λ₯Ό μ 곡νλ€.
Set
- Setμ value λ€λ‘ μ΄λ£¨μ΄μ§ 컬λ μ μ λλ€.
- Setμ μμ κ°λ₯ν©λλ€.Β
- νλ‘κ·Έλ¨μ΄ μ€νλλ λμ Setμ valueμ λν
- κ°μ μΆκ°λ μμ λ₯Ό ν μ μμ΅λλ€.
- μ¬κΈ°κΉμ§λ λ°°μ΄κ³Ό κ°μ§λ§ setκ³Ό λ°°μ΄μλ μ°¨μ΄μ μ΄ μ‘΄μ¬ν©λλ€.
κ°μ΄ μ€λ³΅λμ§ μμ΅λλ€.
μ΄λ―Έ μ‘΄μ¬νλ κ°μ μΆκ°νλ €νλ©΄ μ무μΌλ μΌμ΄λμ§ μμ΅λλ€.

Setμ λλ ·ν λͺ©μ μ κ°μ§κ³ λ°μ΄ν°λ₯Ό κ΄λ¦¬ν©λλ€.
λ°λ‘ μ΄λ€ λ°μ΄ν°κ° μμ μ λ©€λ²μΈμ§ νμΈνλ μμ μ 빨리 μ²λ¦¬νλ €λ λͺ©μ μ λλ€.

SetμΌλ‘ ν μ μλ μΌλ μμ΅λλ€.
Setμ μΈλ±μ€ κ°μΌλ‘ λ°μ΄ν°λ₯Ό μ‘°ννλ μΌμ ν μ μμ΅λλ€.

Set Methods
Β

Setμμ ꡬνλμ§ μμ κ²
- arrayμ μ΄λ―Έ μ‘΄μ¬νλ map, filter, some, every
κ°μ ν¨μ 미ꡬν
Β - λ§μ κ°λ€μ νκΊΌλ²μ μ²λ¦¬ν μ μλ λ©μλλ€μ΄
λλ½ λμμ΅λλ€.
Ex.) set.addAll(iterable), set.removeAll(iterable) λ±λ±
Β - Setμ Object κ°μ΄ λ€μ΄μ€λ κ²½μ° λ νΌλ°μ€(μ£Όμ κ°)μ΄ λ€λ₯΄λ©΄
κ°μ΄ κ°μλ λ€λ₯΄κ² μ²λ¦¬ν©λλ€.
Β
Map
Mapμ key - value νμ΄(pair)λ‘ μ΄λ£¨μ΄μ§ 컬λ μ μ λλ€.
Key - Value?
μΌλ° κ°μ²΄ 리ν°λ΄μ΄ μλλ°?
μΌλ° κ°μ²΄λ‘λ μ΄λ° λ¬Έμ μ μ ν΄κ²°ν μ μμ΅λλ€.Β
-
κ²μ ν μ΄λΈ(lookup table)λ‘ μ¬μ© μ€μΈ κ°μ²΄μ λ©μλλ₯Ό μΆκ°νλ €λ©΄ μ΄λ¦ μΆ©λμ μνμ κ°μν΄μΌ ν©λλ€.
-
μμ± key λ μΈμ λ λ¬Έμμ΄μ λλ€. (ES6 μμλ μ¬λ³Όλ κ°λ₯ν©λλ€).
- κ°μ²΄μ μΌλ§λ λ§μ μμ±μ΄ μ‘΄μ¬νλμ§ μμλΌ μ μλ ν¨κ³Όμ μΈ λ°©λ²μ΄ μ‘΄μ¬νμ§ μμ΅λλ€.
- μΌλ° κ°μ²΄λ λ°λ³΅μ νλ €λ©΄ λ§μ λΉμ©μ΄ μλͺ¨λ©λλ€. Β Β Β Β Β Β Β Β Β Β
κ°μ₯ ν° λ¬Έμ μ μ?
μΌλ° κ°μ²΄λ iterable νμ§ μμ΅λλ€.Β
κ·Έλμ for-of ꡬ문μ΄λ, ...(destructuring) λ¬Έλ² λ±
iterableμ μ¬μ©νλ λͺ¨λ λ¬Έλ²μ μΌλ° κ°μ²΄λ₯Ό μ¬μ©ν μ μμ΅λλ€.
Β
νμ§λ§ μ§λ©΄ν λ¬Έμ κ° μ΄λ° κ²½μ° κΈ°λ₯μ νμλ‘ νμ§ μλλ€λ©΄,
μΌλ° κ°μ²΄λ₯Ό μ¬μ©νλ κ²μ μ¬λ°λ₯Έ μ νμ λλ€.
μ μ΄λ° μμΌλ‘ μ€κ³λμλκ°?
ES6 컬λ μ μ΄ μ¬μ©μ λ°μ΄ν°μ λΉνΈμΈ λ©μλ μ¬μ΄μ μ΄λ¦ μΆ©λμ νΌνκΈ° μν΄ μ€κ³λμκΈ° λλ¬Έμ, ES6 컬λ μ μ μμ μ λ©€λ² λ°μ΄ν°λ₯Ό λλ¬λ΄κΈ° μν΄ μμ±(property)μ μ¬μ©νμ§ μμ΅λλ€.
μ΄λ ν΄μ ν μ΄λΈμ λ©€λ² λ°μ΄ν°μ μ κ·ΌνκΈ° μν΄ obj.key λλ obj[key] κ°μ ꡬ문μ μ¬μ©ν μ μλ€λ κ²μ μλ―Έν©λλ€. λ°λμ map.get(key) ꡬ문μ μ΄μ©ν΄μΌ ν©λλ€. λ, ν΄μ ν μ΄λΈμ λ©€λ² λ°μ΄ν°λ μμ±κ³Ό λ¬λ¦¬ νλ‘νΌν° 체μΈ(property chain)μ ν΅ν΄ μμλμ§ μμ΅λλ€.
μ΄λ‘ μΈν μ₯μ μ΄λΌλ©΄, Object μ λ¬λ¦¬ Map κ³Ό Set μλ μμ λ‘κ² λ©μλλ₯Ό μΆκ°ν μ μλ€λ μ μ λλ€. μ΄λ¦ μΆ©λμ μν μμ΄ κ°μ²΄μ λ©μλλ₯Ό μΆκ°ν μ μμ΅λλ€.
κ·Έλμ Mapμ μ΄λ»κ²
μ¬μ©νλλ©΄μ?
μ΄λ κ² μ¬μ©ν©λλ€.

Weak Collections
Memory
Garbage Collections
μλ°μ€ν¬λ¦½νΈμ κ°λΉμ§ 컬λ μ
μ λ©λͺ¨λ¦¬ κ΄λ¦¬μ λꡬμ
λλ€.
μ°Έμ‘°κ° μλ κ°μ²΄λ€μ μλμ μΌλ‘ μ κ±°νκ³ κ°μ²΄λ€μ μμμ λμ°Ύμ΅λλ€.
κ°λΉμ§ 컬λ μ μ΄λ?
Mapκ³Ό Setμ λ©λͺ¨λ¦¬
Β
Mapκ³Ό Setμ΄ μ°Έμ‘°νλ κ°μ²΄ λ€μ κ°νκ² μ°κ²°λμ΄ μμ΅λλ€.
μ΄κ²μ κ°λΉμ§ 컬λ μ
μ΄ λ©λͺ¨λ¦¬λ₯Ό μκ±°νμ§ λͺ»νκ² ν©λλ€.
λ§μ½ ν¬κΈ°κ° ν° Mapκ³Ό Setμ κ°μ²΄κ° λ μ΄μ νμλ‘ νμ§ μλλ€λ©΄
κ°λΉμ§ 컬λ μ
μμ μ΄κ²μ κ°μ Έκ°κΈ° μν΄ λΉμΌ λΉμ©μ μΉλ€μΌ ν©λλ€.
Β
ES6μ ν΄κ²° λ°©μ
Weak Set, Weak Map
μ΄ ES6μ 컬λ μ
λ€μ λ μ΄μ μ¬μ©λμ§ μμ λ,
λ©λͺ¨λ¦¬μμ μ½κ² μμ λκΈ° μν΄ 'μ½ν' κ²°ν©μ μ μ§ν©λλ€.
Weak Map
Weak Mapμ Mapκ³Ό λΉμ·ν©λλ€. λ¨μ§ λ©μλκ° λͺ κ° μκ³ ,
κ°λΉμ§ 컬λ μ
μ μ²λ¦¬κ° λ€λ¦
λλ€.

Use Case - Private data

Weak Set
Weak Set μμ Set 컬λ μ
κ³Ό
λΉμ·νμ§λ§ λ©μλκ° λͺ κ° μκ³ ,
κ°λΉμ§ 컬λ μ
μ μν΄ μ½ν κ²°ν©μ μ μ§ν©λλ€.
Symbolμ΄ λμ€κΈ° μ κΉμ§ κ°μ²΄μ νκ·Έ κ°μΌλ‘ μ£Όλ‘ μ¬μ©λμμ΅λλ€.

κ²°Β Β Β λ‘
Mapκ³Ό Setμ ν€/κ°μ μμΌλ‘ μ΄λ£¨μ΄μ§ ES6μ μλ‘ λμ¨ μ»¬λ μ
μ
λλ€.
μ¦, μλ°μ€ν¬λ¦½νΈμ κ°μ²΄ 리ν°λ΄μ μ¬μ ν λ§μ μνμμ 컬λ μ
μΌλ‘μ¨ νμ©λ μ μμ΅λλ€.
μλ‘μ΄ ES6 컬λ μ
λ€μ΄ νμν μν©μ΄ μλλΌλ©΄ κ΅³μ΄ μλ‘μ΄ μ»¬λ μ
μΌλ‘ κ΅μ²΄ν νμλ μμ΅λλ€.
Β
μ κΉ, κ·ΈλΌ μΈμ μ¨μΌν΄?
MDNμ΄ μλ €μ£Όλ μ μ ν μ§λ¬Έλ€
- ν€ λ€μ νκ· μ€ν μκ°μ μμ μλλ°,
λμ μΌλ‘ μ‘°ν ν΄μΌ νλκ°? - λͺ¨λ κ°λ€μ΄ κ°μ νμ
λ€μ κ°μ§λ©°,
μλ‘ κ΅νλμ μ¬μ©ν μ μλκ°? - λ¬Έμμ΄μ΄ μλ ν€ λ€μ΄ νμνκ°?
- ν€-κ°μ μμ΄ μμ£Ό μΆκ° λλ μμ λλκ°?
- ν€-κ°μ μμ μμ΄ μμ£Ό λ³ν λλκ°?
- 컬λ μ μ΄ λ°λ³΅λμΌ νλκ°?
μ΄λ΄ λ μ¬μ©νλΌ!!!