Higher-Order Function
About
Higher-Order Function : κ³ μ°¨ν¨μ
κ³ μ°¨ν¨μλ, ν¨μλ₯Ό λ€λ£¨λ ν¨μλ₯Ό λ§νλ€.
ν¨μλ₯Ό λ€λ£¬λ€
ν¨μλ₯Ό λ€λ£¬λ€λ κ²μ λ€μκ³Ό κ°μ κ²μ λ§νλ€.
ν¨μλ₯Ό μΈμλ‘ λ°μ λμ μ€ννλ ν¨μ
ν¨μλ₯Ό 리ν΄νλ ν¨μ
ν¨μλ₯Ό μΈμλ‘ λ°μμ λ λ€λ₯Έ ν¨μλ₯Ό 리ν΄νλ ν¨μ
μ¬μ€μ ν¨μν νλ‘κ·Έλλ°μ μ λ°μ 'κ³ μ°¨ ν¨μλ₯Ό μ κ·Ήμ μΌλ‘ νμ©νλ νλ‘κ·Έλλ°'μ΄λΌκ³ ν μ μλ€.
μ λͺ
ν κ³ μ°¨ν¨μλ€λ‘λ Underscore.jsμ _.map
, _.filter
, _.reduce
μ΄ μλ€. (νΉμ ES6μ κ·Έκ²)
Example
ν¨μλ₯Ό μΈμλ‘ λ°μ λμ μ€ννλ ν¨μ
μ¬κΈ°μ
add
μsub
μ μΌλ° ν¨μλ€. ν¨μλ₯Ό μΈμλ‘ λ°κ±°λ ν¨μλ₯Ό 리ν΄νμ§ μκΈ° λλ¬Έμ΄λ€.callWith10
μ κ³ μ°¨ ν¨μλ€. ν¨μλ₯Ό λ°μ λ΄λΆμμ λμ μ€ννκΈ° λλ¬Έμ΄λ€.func
λΌλ μ΄λ¦μ μΈμλ‘add
λsub
ν¨μλ₯Ό λ°μ, μΈμλ‘ λ°μλval
κ³Ό ν¨κ» 10μ μΈμλ‘ λκΈ°λ©΄μ λμ μ€ννλ€.
ν¨μλ₯Ό 리ν΄νλ ν¨μ
constant
ν¨μλ μ€ν λΉμ λ°μλ 10μ΄λΌλ κ°μ λ°μ λ΄λΆμμ μ΅λͺ
ν¨μλ₯Ό ν΄λ‘μ λ‘ λ§λ€μ΄ val
μ κΈ°μ΅νκ² λ§λ ν 리ν΄νλ€.
리ν΄λ ν¨μμλ always10
μ΄λΌλ μ΄λ¦μ μ§μ΄μ£Όμκ³ , always10
μ μ€ννλ©΄ νμ 10μ 리ν΄νλ€. constant
μ²λΌ ν¨μλ₯Ό 리ν΄νλ ν¨μλ κ³ μ°¨ ν¨μλ€.
ν¨μλ₯Ό λμ μ€ννλ ν¨μλ₯Ό 리ν΄νλ ν¨μ
μ΄λ²μ μμ λ μμλ₯Ό μ‘°ν©ν΄μ ν¨μλ₯Ό λμ μ€ννλ ν¨μλ₯Ό 리ν΄νλ ν¨μλ₯Ό λ§λ€μ΄λ³Έλ€.
callWith
κ° callWith10
μ΄ μλ callWith
κ° λμ΄ μ«μκ° μλ κ°λ νμ©ν μ μλ€.
Summary
ν¨μν νλ‘κ·Έλλ°μ ν¨μμ μΈμλ₯Ό μΈμ μ΄λ»κ² μ μ©ν κ²μΈκ°, ν¨μλ₯Ό μΈμλ‘ μΈμ μ΄λ»κ² μ μ©ν κ²μΈκ°, μΈμλ‘ λ°μ ν¨μλ₯Ό μΈμ μ΄λμ νκ°ν κ²μΈκ° λ±μ λν μ΄μΌκΈ°μ΄κΈ°λ νλ€.
μμ©ν ν¨μ, λΆλΆ μ μ©(partial application), 컀λ§(currying), κ³ μ°¨ ν¨μ(higher-order function) λ±μ λͺ¨λ μΈμμ κ΄λ ¨λ ν¨μν νλ‘κ·Έλλ°μ νΉμ§λ€μ΄λ€.
Last updated
Was this helpful?