ģķģģ źø°ģķ ķė”ź·øėė° ķØė¬ė¤ģ, ģģ ķØģ
ģ“ģ ģ ģģ±ķė źø°ģ”“ģ ģ¬ź³ ė°©ģģ ź¹Øė¶ģė ķØģķ ģ¬ź³ ķ¬ģ¤ķ
ģ ģ“ģ“, ģ“ė² ķ¬ģ¤ķ
ģģė ķØģķ ķė”ź·øėė°ģ“ ģ§ķ„ķė ź“ģ ģ ģ¤ģ ķė”ź·øėØģ źµ¬ķķźø° ģķ“ ģź³ ģģ“ģ¼ķė ķģģ ģø ź°ė
ģ¤ ķėģø ģģ ķØģ(Pure functions)
ģ ėķ ģ“ģ¼źø°ė„¼ ķ“ė³¼ź¹ ķė¤.
2017ė
ģƤ, ķØģķ ķė”ź·øėė°ģ“ė¼ė ķØė¬ė¤ģģ“ ė ģ¤ė„“ė©“ģ ģģ ķØģė¼ė ź°ė
ėķ ķØź» ģ£¼ėŖ©ė°źø° ģģķź³ , ģ§źøė źµ¬źøģ ģģ ķØģ
ė¼ź³ ź²ģķė©“ ė§ģ ź°ė°ģ ė¶ė¤ģ“ ģģ ķØģģ ķ¹ģ§ģ ėķ ķ¬ģ¤ķ
ģ ģģ±ķ“ėģ ź²ģ ė³¼ ģ ģė¤.
ģ¼ė°ģ ģ¼ė” ģ°ė¦¬ź° ģģ ķØģģ ėķ“ģ ź³µė¶ķė ¤ź³ ķė©“ ė¤ģź³¼ ź°ģ ė ź°ģ§ ķ¹ģ§ģ ź°ģ§ė ķØģė¼ź³ ģ ģķė ź²½ģ°ė„¼ ė§ģ“ ė³¼ ģ ģė¤.
- ėģ¼ķ ģøķ(ģøģ)ģė ķģ ėģ¼ķ ź²°ź³¼ė„¼ ė“ģ¼ķė¤.
- ķØģ ģøė¶ģ ģķė„¼ ė³ź²½ķź±°ė, ģøė¶ģ ģķģ ģķ„ģ ė°ģģė ģėė¤.
ź·øė¬ė ģ“ė ź² ź³µė¶ķź² ėė©“ āģģ ķØģė ģ“ė°ģ ė° ķ¹ģ§ģ ź°ģ§ź³ ģė ķØģāė¼ź³ ģøģ°ź² ėźø° ģ¬ģ“ė°, ģ¬ģ¤ ģģ ķØģė ģ“ė ź² ģ ź·¼ķ ķģź° ģė, ė ģ¬ķķ ź°ė ģ“ė¤.
ė ź·øė„ ģ“ė ź²ė§ ģøģėė ģģ ķØģź° ģ“ė¤ ź²ģøģ§ ģ“ķ“ķź³ ģ¬ģ©ķė ė°ė ģ ķ ė¬“ė¦¬ź° ģģ§ė§, ķģė ģģ ķØģģ ģ“ė¬ķ ķ¹ģ§ģ“ ģ“ėģ ėģØ ź²ģøģ§, ģģ ķØģė¼ė ź²ģ“ ģ ķķź² ė¬“ģģ ģėÆøķėģ§ģ ėķ“ ģ”°źø ė ź·¼ė³øģ ģø ģ“ģ¼źø°ė„¼ ķ“ė³“ė ¤ź³ ķė¤.
ģģ ķØģė ź·øė„ ģķģ ķØģė¤
ģ°ė¦¬ź° ģģ ķØģė¼ź³ ģ“ė¦ģ ė¶ķź³ ģģ ķØģģ ķ¹ģ§ģ ģ“ė¬ģ“ė¬ķ ź²ė¤ģ“ ģė¤ź³ ź³µė¶ķźø° ėė¬øģ ėź° ķ¹ė³ķ ķØģģø ź² ź°ģ§ė§, ģ¬ģ¤ ģģ ķØģė ź·øė„ ģķģģ ģ¬ģ©ķė ķØģė„¼ ķė”ź·øėė°ģ ģøź³ģ ėź°ģ“ źµ¬ķķ“ėģ ź²ģ ė¶ź³¼ķė¤.
ģķ¤ ė°±ź³¼ģ ķØģķ ķė”ź·øėė°ģ ģ ģė„¼ ė³“ė©“ ģ“ ź°ė ģ ėķ“ ģ”°źø ė ģģøķź² ģģ±ė ģ¤ėŖ ģ ė³¼ ģ ģė¤.
ķØģķ ķė”ź·øėė°(functional programming)ģ ģė£ ģ²ė¦¬ė„¼ ģķģ ķØģģ ź³ģ°ģ¼ė” ģ·Øźøķź³ ģķģ ź°ė³ ė°ģ“ķ°ė„¼ ė©ė¦¬ķė ķė”ź·øėė° ķØė¬ė¤ģģ ķėģ“ė¤. ėŖ ė ¹ķ ķė”ź·øėė°ģģė ģķė„¼ ė°ź¾øė ź²ģ ź°ģ”°ķė ź²ź³¼ė ė¬ė¦¬, ķØģķ ķė”ź·øėė°ģ ķØģģ ģģ©ģ ź°ģ”°ķė¤.
ķØģķ ķė”ź·øėė° - ģķ¤ ė°±ź³¼ ģė¬ø ė§ķ¬
ģ“ ģ¤ėŖ
ģģ ź°ģ„ ģ¤ģķ ķ¤ģėė ė°ė” ģķģ ķØģ
ė¼ė ėØģ“ģ“ė¤. ģ°ė¦¬ź° ģ“ė°ģ ė° ķ¹ģ§ģ ģøģ°ė©° ź³µė¶ķė ģģ ķØģė¼ė ė
ģģ ė§ ź·øėė” ģģķ ķØģ, ģ¦ ģķģģ ģ¬ģ©ķė ķØģė„¼ ģėÆøķė ź²ģ“ė¤.
ģ°ė¦¬ź° ģķģ ģøź³ģ ķė”ź·øėė°ģ ģøź³ģģ ėģ¼ķź² ķØģė¼ė ź°ė ģ ģ¬ģ©ķź³ ģźø° ėė¬øģ ź°ķ¹ ģģ“ė²ė¦¬źø“ ķģ§ė§, ģ¬ģ¤ ķė”ź·øėė°ģģģ ķØģė ģķģ ź·øź²ź³¼ė ė¤ė„ø ģ ģ“ ģė¹ķ ė§ė¤.
ź·øė¼ ģķģ ģø ķØģģ ķė”ź·øėė°ģ ķØģ ź° ģ°Øģ“ģ ģ ģģė³“źø° ģķ“, ģķģ ģø ķØģģ ģ ģė¶ķ° ė¤ģ ķė² ķģ¤ķź² ģ§ź³ ėģ“ź°ėė” ķģ.
ģķģģģ ķØģ
ģ°ė¦¬ź° ģ¤ķģ ė ė°°ģ ė ķØģė¼ė ė ģģ ėėµ ė¤ģź³¼ ź°ģ ģ ģė„¼ ź°ģ§ė ź°ė ģ“ė¤.
ģģģ ģ ėķģ¬ ź·øģ ėģķė ź° ģ ģ¼ķź² ģ”“ģ¬ķė ėģ ź“ź³
ģķģ“ė¼ė ķė¬ø ķ¹ģ ģ ģ“ė ¤ģ ė³“ģ“ė ė¬øė²ģ ģ¬ģ©ķźø“ ķģ§ė§ ėÆģ“ė³“ė©“ ė³ ź±° ģė¤. ģ“ ģ ģģģ ė±ģ„ķė ė ģ ģģ, ė ģ¹ģģ“ė¼ź³ ķė©°, ź°ź° ģ ģģģ ķØģģ input
, ģ¹ģģ ķØģģ output
ģ ģ¬ģ©ė ģ ģė ź°ģ ģ§ķ©ģ“ė¼ź³ ģź°ķė©“ ėė¤.
ģ¦, ģ ģģģ ķØģģ ģøģė” ģ¬ģ©ėė ź°ė¤, ģ¹ģģ ķØģģ ź²°ź³¼ė¬¼ė” ģ¬ģ©ėė ź°ė¤ģ“ė¼ė ė»ģ“ė¼ź³ ė“ė ė¬“ė°©ķė¤.
ķģ§ė§ ģ“ ģ ģģģ ź°ģ„ ģ¤ģķ ź²ģ ģ ģģģ“ė ģ¹ģģ“ė ķė ź°ė
ģ“ ģėė¼, ķØģģ ģøģė” ģ¬ģ©ėė ź° ķėģ ėģķė ķØģģ ź²°ź³¼ ź°ģ“ ģ ģ¼ķź² ģ”“ģ¬ķė¤
ė¼ė ź°ė
ģ“ė¤.
ģ“ė¤ ź°ģ ķØģģ ėģ§ė©“ ė°ėģ ķėģ ź°ģ ė°ķķė ź², ģ“ź²ģ“ ė³øė ķØģģ ģ ģė¤.
오른쪽 그림처럼 정의역의 원소에 대응하는 치역의 원소가 없거나 2개 이상인 경우는
함수의 정의에서 벗어나게 된다
ģ”°źø ė ķøķ ģ“ķ“ė„¼ ģķ“ ģøģė” ė°ģ ź°ģ 2ė„¼ ź³±ķė ź°ėØķ ķØģė„¼ ģź°ķ“ė³“ģ. ģ°ė¦¬ė ģ“ė° ķØģė„¼ ģ ģķ ė ģ ź°ģ ģģ¼ė” ėķėøė¤.
ģ“ģ ģ“ ķØģģ ģøģģø ė„¼ 1ģ“ė¼ź³ ģź°ķ“ė³“ė©“ ģ°ė¦¬ė ė¼ė ź²°ź³¼ė„¼ ģ»ģ ģ ģė¤. ė§ģ½ ģ“ė ė ź°ģźø° ģ“ ėģ“ė²ė¦°ė¤ė©“, ģ“ ķØģė ķ¹ģ ķ ģ ģģģ ģģģ ė§ėģėė ģ¹ģģ ģģź° ģ ģ¼ķģ§ ģģ¼ėÆė” ė ģ“ģ ķØģė¼ź³ ė¶ė„¼ ģ ģė ź²ģ“ė¤.
ģ¼ė°ģ ģ¼ė” ģ“ģ¼źø°ķė ģģ ķØģģ ķ¹ģ§ė¤ģ ė°ė” ģ“ė¬ķ ģķģ ķØģģ ģ±ģ§ģģ źø°ģķė¤.
ķė”ź·øėė°ģģģ ķØģ
ź·øė¬ė ķė”ź·øėė°ģģģ ķØģģė ģ“ė¬ķ ģ ģ½ģ“ ģ ķ ģė¤. ģ“ė° ģ ė° ģģė„¼ ė¤ ź²ė ģģ“, ģ“ė¤ ź°ė ė°ķķģ§ ģė void
ķ ķØģź° ģģ§ ģģź°?
function foo (x): void {
const y = x * 2;
}
console.log(foo(1));
undefined
ģķģ ģø ķØģģ ģ ģė” ė¹ģ¶°ė³¼ ė ģ“ė¬ķ void
ķ ķØģė ķØģź° ģėė¤. ģ ģģģ ģģģø x
ģ ė§ėģķė ģ¹ģģ ģģź° ģźø° ėė¬øģ“ė¤. ź·øėģ ķė”ź·øėė°ģģģ ķØģė¼ė ź°ė
ģ“ ģķģ ķØģģ ģ½ź° ė¤ė„“ė¤ź³ ģ“ģ¼źø°ķė ź²ģ“ė¤.
ģ¬ģ¤ ķė”ź·øėė°ģ ķØģė ģķģ ķØģģģ āģ“ė¤ ź°ģ ėģ øģ£¼ė©“ ėź°ė„¼ ź³ģ°ķė¤āė¼ė ź°ė ė§ ė¤ź³ ģØ ź²ģ ė¶ź³¼ķė©°, ģķģ ģø ź“ģ ģģ ė°ė¼ė³“ė©“ ķė”ź·øėė°ģ ķØģė ģ¬ģ¤ ķØģź° ģė ź²½ģ°ź° ė ė§ė¤.
ė¬“ģė³“ė¤ ģķģ ķØģģ ķė”ź·øėė°ģģģ ķØģź° ź°ģ„ ķ° ģ°Øģ“ė„¼ ė³“ģ“ė ģ ģ ė°ė” ķØģģ ėģģ“ ģ¼ź“ėģ§ ģģ ģ ģė¤ė ź²ģ“ė¤.
ģź¹ ģģė” ė¤ģė ė¼ė ģķģ ķØģė ė“ė¶ źµ¬ķģ“ ģ“ė»ź² ėģ“ģė ķģ ė” 1ģ ė°ģ¼ė©“ 2ė„¼ ė±ģ“ė“ė ź²ģ“ ė³“ģ„ėģ“ ģģ§ė§, ķė”ź·øėė°ģģė ź·øė ģ§ ģģ ķØģė ģ¼ė§ė ģ§ ė§ė¤ģ“ ė¼ ģ ģė¤.
ģė„¼ ė¤ė©“ Math.random
ģ“ė¼ėź°, Date.prototype.getTime
ź³¼ ź°ģ ė©ģėė¤ģ ģ¬ģ©ķ ķØģ ź°ģ ź²ė¤ ė§ģ“ė¤. ģ“ ė©ģėė¤ģ ķØģģ ėģź³¼ ģ ķ ģź“ģė ź°ģ ė§ė¤ģ“ė“źø° ėė¬øģ, ķØģģ ģ°ģ°ģ“ ģ“ė¬ķ ź°ė¤ģ ģ¢
ģėģ“ ė²ė¦°ė¤ė©“ ź°ė°ģė ģ“ ķØģź° ģ“ė¤ ź°ģ ė±ģ“ė¼ ģ§ ģ ė ģģø”ķ ģź° ģė¤.
function sum (x: number): number {
return x + Math.random();
}
sum(1);
sum(1);
sum(1);
5 // ?
4 // ?
9 // ?
ģ“ė° ź°ė ģ ķ¹ģ ķ ģėÆøė„¼ ź°ģ§ė ź°ė¤ģ ģ ģ„, ķ ė¹, ķøģ¶ķ ģ ģė ķė”ź·øėė°ģ ģøź³ģģė§ ģ”“ģ¬ķė ź²ė¤ģ“ė©°, ģķģ ģøź³ģģė ģ“ė° ź°ė ģģ²“ź° ģė¤.
ģ“ė ź² ķ¹ģ ķ ģėÆøė„¼ ź°ģ§ė ź°ė¤ģ ģ°ė¦¬ė ģķ(State)
ė¼ź³ ė¶ė„øė¤. ģķė ķė”ź·øėØģ ķģ¬ ģķ©ģ ė³“ģ¬ģ£¼ė ģ¢ģ ģķ ė ķģ§ė§, ģ¬źø°ģ źø°ģ ė¬“ė¶ė³ķź² ģ“ ģķė„¼ ģ°øģ”°ķź±°ė ė³ź²½ķė ź²½ģ°, ź°ė°ģģ”°ģ°Ø ķģ¬ ķė”ź·øėØģ“ ģ“ė»ź² ėģź°ėģ§ ķģ
ķźø° ķė ģ¬ķ ģķ©ģ“ ė°ģķ ģė ģė¤.
ź·øėģ ź°ė°ģė¤ģ ģķė„¼ ė³ź²½ķė ķģģ ķ¹ģ ķ ź·ģ¹ź³¼ ģ ģ½ģ ģ ķ“ģ ė¬“ė¶ė³ķ ģķ ė³ķė„¼ ģµėķ ķ¼ķź³ , ģ“ė° ė³ķė„¼ ģ¶ģ ķ ģ ģė ģķ©ģ ģ ķøķė¤.
ė¬øģ ė ķė”ź·øėė°ģģģ ķØģė ģ“ė° ģķė¤, ė ģ ķķ ģ“ģ¼źø°ķģė©“ ķØģ ģøė¶ģ ģķ
ė¤ź³¼ ėź° ģøģ½ģ“ ģźø°ė ź²½ģ°ź° ė§ė¤ė ź²ģ“ė¤. ģ¬źø° ģøģė” ė°ģ ģė„¼ ķØģ ģøė¶ģ ģ ģøė ė³ģģ ėķ ķ ė°ķķė addState
ė¼ė ź°ėØķ ķØģź° ģė¤.
let state = 3;
function addState (x: number): number {
return state + x;
}
addState(1);
4
addState
ķØģė ģģ ģøė¶ģ ģė state
ė¼ė ź°ģ ģ°øģ”°ķģ¬ ģģ ģ“ ģøģė” ė°ģ ģė„¼ ėķ“ģ£¼ė ź°ėØķ ģ¼ģ ķė¤.
ģ¦, ģ“ ķØģģ ź²°ź³¼ ź°ģ ķØģģ ģøė¶ ģķģø state
ė³ģģ ģ¢
ģėģ“ ģė¤ė ź²ģ“ė©°, ģ“ė° ģķ©ģ ź°ė°ģź° ķØģģ ėģģ ģģø”ķ ģ ģź² ė§ėė ģķ ģģė” ģģ©ķ ģ ģė¤.
ė§ģ½ ė¤ė„ø ź³³ģģ state
ė³ģģ ź°ģ ė³ź²½ģ“ė¼ė ķė©“ ģķ©ģ ėģ± ź¼¬ģ“źø° ģģķ ź²ģ“ė¤.
state = 10;
addState(1);
11
ģ“ģ ź³¼ ź°ģ ķØģģ ź°ģ ģøģė„¼ ģ¬ģ©ķģ§ė§, ź²°ź³¼ź°ģ ģ ķ ė¤ė„“ź² ėģė¤. ģ“ ķØģė ģøė¶ ģķģ ė³ķģ ė°ė¼ ģģ ģ ź²°ź³¼ ź°ė ė³ź²½ėźø° ėė¬øģ, ź°ė°ģė ģ“ ķØģģ ėģģ ģ ķ ģģø”ķ ģ ģė ź²ģ“ė¤.
ģ“ė ź² ķØģź° ķØģ ģøė¶ ģķģ ģķ„ģ ė°ź±°ė, ķØģ ģøė¶ ģķė„¼ ģ§ģ ė³ź²½ķė ķģė„¼ ģ¬ģ“ė ģ“ķķø(Side Effect)
ė¼ź³ ķė©°, ģ¬ģ“ė ģ“ķķøė„¼ ė°ģģķ¤ė ķØģė ź°ė°ģź° ģģø”ķģ§ ėŖ»ķ ė²ź·øė„¼ ė°ģģķ¤ė ģķ ģģ ģ¤ ķėģ“ė¤.
ź·øė° ģ“ģ ė” ģė°ģ¤ķ¬ė¦½ķøģ ź°ģ ģøģ“ģģė ģ ģ ė³ģģ ģ ģø ė° ķ ė¹ģ ģµėķ ģ§ģķė ģ»Øė²¤ģ
ģ ė“ėźø°ė ķė©°, React Hooksģģė ģ¬ģ“ė ģ“ķķøė„¼ ė°ģģķ¤ė ėģģ ė°ė” źµ¬ė¶ķźø° ģķ“ useEffect
ė¼ė ķ
ģ ģ ź³µķźø°ė ķė¤.
function TestComponent () {
useEffect(() => {
localStorage.setItem('greeting', 'Hi');
return () => {
localStorage.removeItme('greeting');
};
});
return <div>TestComponent</div>;
}
ģ§źø ģ“ź² ź°ėØķ ķØģģøė°ė¤ź° ģėģ ģ¼ė” ģ°ģ¶ķ ģķ©ģ“ė¼ ė¶ģģ°ģ¤ė¬ģ ė³“ģ¼ ģė ģģ§ė§, ģ¤ģ ģ“ķė¦¬ģ¼ģ“ģ ģė ģ“ź±°ė³“ė¤ ķØģ¬ ė³µģ”ķź³ ģ“ģķ ģ§ė¤ģ ķė ķØģź° ģėė£©ķė¤.
ģė„¼ ė¤ė©“ API ģė²ģ ķµģ ķ ź²°ź³¼ė¬¼ģ ė±ģ“ė“ė ź°ėØķ ķØģ ėķ ģģķģ§ ģģ ķØģģ ģ¼ģ¢ ģ“ė¤.
async function getUsers () {
try {
const response = await fetch('/api/users');
return response.json();
}
catch (e) {
throw e;
}
}
ė± ė“ė getUsers
ė ķøģ¶ķ ėė§ė¤ ķģ ź°ģ ź°ģ ė°ķķė ķØģė ģėė¤. ķģ¬ ė°ģ“ķ°ė² ģ“ģ¤ģ ģķģ ė°ė¼ ģ ģ ė¦¬ģ¤ķøė ė§¤ė² ė¬ė¼ģ§ ģ ģźø° ėė¬øģ“ė¤.
ģ“ė ź² ģģķģ§ ģģ ķØģė ź°ė°ģź° ķØģģ ź²°ź³¼ė„¼ ģģø”ķė ź²ģ“ ė¶ź°ė„ķźø° ėė¬øģ, ķØģģ ėģģ ź²ģ¬ķė ķ ģ¤ķøė„¼ ģģ±ķė ź² ėķ ė¶ź°ė„ķė¤. ģ ģ“ģ ģģķģ¼ė” ė ė“ė³“ė¼ ģ§ė ź°ģ“ ģģ¤ė ė³ėģ¤ė¬ģ“ ė ģģ ģ“ė¤ źø°ģ¤ģ¼ė” ź²ģ¬ķėØ ė§ģøź°?
ģ“ė ėÆ ķė”ź·øėė°ģ ģøź³ģģ ģ“ģ¼źø°ķė ķØģė ģķģ ķØģė³“ė¤ ė ė³ģź° ė§ź³ , ź²°ź³¼ė„¼ ģģø”ķźø°ź° ķė ź°ė ģ“ė¤.
ģģķ ģķģ ķØģė” ķź·ķģ
ģ, ģ“ģ ģķģ ģøź³ģģ ė§ķė ķØģģ ķė”ź·øėė°ģ ģøź³ģģ ė§ķė ķØģģ ģ°Øģ“ė„¼ ģ“ķ“ė³“ģģ¼ė, ė¤ģ ģģ ķØģģ ģ ģė„¼ ź°ģ øģė³“ģ.
- ėģ¼ķ ģøķ(ģøģ)ģė ķģ ėģ¼ķ ź²°ź³¼ė„¼ ė“ģ¼ķė¤.
- ķØģ ģøė¶ģ ģķė„¼ ė³ź²½ķź±°ė, ģøė¶ģ ģķģ ģķ„ģ ė°ģģė ģėė¤.
ģģ ģ“ģ¼źø° ķėÆģ“, ģķģ ģøź³ģģ ķØģė ėØģķ ģøķģ ė°ģ¼ė©“ ėź° ź³ģ°ģ ķ“ģ ėØ ķėģ ź²°ź³¼ė„¼ ė“ė ź°ė ģ“ė¤.
ź·øė¦¬ź³ ģķģ ģøź³ģė ėź° ź°ģ ģ ģ„ķ“ėź³ ķ ė¹ė ķź³ ķøģ¶ķ ģė ģė ģķė¼ė ź°ė ģ“ ģģ¼ė, ķØģź° ķØģ ģøė¶ ģķģ ģķ„ģ ģ£¼ź³ ė°ė ģ¬ģ“ė ģ“ķķøė¼ė ź²ė ė¹ģ°ķ ģ”“ģ¬ķ ģź° ģė¤.
ģ¦, ģķģģģ ķØģė„¼ ķė”ź·øėė°ģ ź·øėė” ģ ģ©ķė©“ ģģķ ķØģģ ķ¹ģ±ģø āķØģģ ź²°ź³¼ė ķØģģ ģøģģė§ ģķ„ģ ė°ėė¤āė¼ė ģ”°ź±“ź³¼ āķØģ ģøė¶ģ ģķė„¼ ė³ź²½ķź±°ė ģķ„ģ ė°ģģ ģėė¤āė¼ė ģ”°ź±“ģ“ ģģ°ģ¤ė½ź² ģ¶©ģ”±ėė ź²ģ“ė¤.
ź·øė¦¬ź³ ķØģķ ķė”ź·øėė°ģģ ģ“ģ¼źø°ķė ė¶ė³ģ±(immutable)
ėķ ģķź³¼ ė§ėæģ ģė ģ§ģ ģøė°, ģ ģ“ģ ģķė¼ė ź°ė
ģ“ ģ”“ģ¬ķģ§ ģė ģķģ ķØģė„¼ ķė”ź·øėė°ģ¼ė” źµ¬ķķ ģģ ķØģė„¼ ģ¬ģ©ķź³ ģģ¼ė, ģķė„¼ ė³ź²½ķė¤ė ź°ė
ėķ ģģ“ģ¼ ķė ź²ģ“ė¤.
ķģ§ė§ ķė”ź·øėė°ģ ģøź³ģė ģģ°ķ ģķė¼ė ź°ė ģ“ ģ”“ģ¬ķźø° ėė¬øģ, āķØģģ ģøģė„¼ ģ§ģ ģģ ķ“ģė ģėė¤āģ ź°ģ ģ ģ½ė¤ģ ģ¤ģ¤ė” ģ ģķź³ ģ§ģ¼ėź° ģ ģėė” ģ ė° ź°ė ģ ėŖ ģģ ģ¼ė” ģ“ģ¼źø°ķė ź²ģ“ė¤.
ėķ ģģ ķØģė„¼ ģ¬ģ©ķØģ¼ė”ģØ ė°ė¼ģ¤ė ģ„ģ ė¤ģø āķ ģ¤ķøź° ģ¬ģģ§ė¤ā, āģ°øģ”° ķ¬ėŖ ģ±ģ“ ė³“ģ„ėė¤āģ ź°ģ ģ“ģ¼źø°ė¤ė ģķģ ģø ź°ė ģģģ ķØģė„¼ ģź°ķė©“ ģ¬ģ¤ ė¹ģ°ķźø° ź·øģ§ ģė ģ“ģ¼źø°ė¤ģ“ė¤.
ģģ ģ ź¹ ģ“ģ¼źø° ķģ§ė§, ė§¤ė² ė¤ė„ø ź°ģ“ ėģ¤ė ķØģģ ėķ ģ ė ķ ģ¤ķøė„¼ ģ§ ė¤ź³ ģź°ķ“ė³“ė©“ ģ§ģ§ ėµģ“ ģė¤. ģ ģ“ģ ź°ė°ģź° ķØģģ ėģģ ģģø”ķ ģ ģģ¼ė ķØģģ ėģģ ėķ ėŖØė² ėµģģ ģ ģķ ģė ģģ ź²ģ“ź³ , ė¹ģ°ķ ķ ģ¤ķø ģģ±ė ė¶ź°ė„ ķė¤.
ėķ ģģ ķØģė„¼ ģ¬ģ©ķė©“ ģ°øģ”° ķ¬ėŖ
ģ±ģ“ ė³“ģ„ėė¤ė ė§ė ź²°źµ ģ°ė¦¬ź° ģķģģ ģ¬ģ©ķź³ ģė =
źø°ķøģ ģėÆøė„¼ ģź°ķ“ė³“ė©“ ź·øė ź² ķ¹ė³ķ ė§ģ“ ģėė¤.
ź³ģ° ź²°ź³¼ź° ė³ķģ§ ģėė¤ė ź²ģ ģėÆøķėė°, ģ ģ“ģ ģ°ė¦¬ė ģģ ė¶ķ° ģķģģ ź·ø ź°ė ģ ģ¬ģ©ķź³ ģģė¤
ģ“ė ėÆ ģģ ķØģė ģ“ė¤ ģøģė„¼ ģ¬ģ©ķģ ė ģ“ė¤ ź²°ź³¼ ź°ģ“ ėģ¬ ģ§ ėģģ ģģø”ķ ģ ģź³ , ģķė¼ė ź²ģ ģģ ģģ ė²ė¦° ź°ė ģ“źø° ėė¬øģ, ź°ė°ģź° ģģø” ź°ė„ķ ģ“ķė¦¬ģ¼ģ“ģ ģ ź°ė°ķźø° ģ½ź² ė§ė¤ģ“ģ¤ė¤.
ėķ ķØģ ģģ²“ź° ķØģ ģøė¶ģ ģķģ ź“ź³ ģģ“ ģģķź² ėØģ¼ķ ģ°ģ°ģė§ ģ§ģ¤ķź³ ģģ¼ė, ķ ģ“ķė¦¬ģ¼ģ“ģ
ģģ ģ ģøķ ģģ ķØģė ė¤ė„ø ģ“ķė¦¬ģ¼ģ“ģ
ģė¤ź° ź°ģ øė¤ ė¶ķė ė°ėģ ėģ¼ķ ėģģ ķė¤ė ź²ģ“ ė³“ģ„ėė¤. ģ¦, ģ¢ģ ėŖØėķģ ģ”°ź±“ ģ¤ ķėģø ėģ ģģ§ė
ģė ė¶ķ©ķė¤.
ģ“ė ź² ģģ ķØģė„¼ ģ¬ģ©ķģ¬ ģģ±ė ģ“ķė¦¬ģ¼ģ“ģ ģ ź°ė°ģź° źµ¬ģ”°ģ ėģģ ģ½ź² ģ“ķ“ķ ģ ģźø° ėė¬øģ, źµ³ģ“ ķØģķ ķė”ź·øėė° ķØė¬ė¤ģģ“ ģėėė¼ė ģ ė°ģ ģø ģ“ķė¦¬ģ¼ģ“ģ ģ¤ź³ģ ź½¤ė ėģģ“ ėė ź°ė ģ“ė¼ź³ ķ ģ ģė¤.
ė§ģ¹ė©°
ķģė ģ²ģ ģģ ķØģė¼ė ź°ė ģ ģ ķģ ė źµ¬źøė§ź³¼ ė¤ė„ø ė¶ė¤ģ“ ģģ±ķ“ģ£¼ģ ķ¬ģ¤ķ ė¤ģ ķµķ“ ģģ ķØģģ ķ¹ģ§, ģ„ģ , ėØģ ė±ģ ėؼģ ģ ķź² ėģėė°, ė¹ģģė āė ģė”ź² ź³µė¶ķ ź² ėģźµ¬ė§āģ“ė¼ė ģź°ģ“ģė¤.
ģ¬ģ¤ ģģ ķØģģ ź°ģ ķØė¬ė¤ģģ ģ²ģ ģ ķź² ėė©“ ģµź“ģ²ė¼ źµ¬źøė§ģ ķµķ“ ģ ė³“ė„¼ ģµėķź³ ź³µė¶ė„¼ ķź² ėėė°, ģ“ė ģ¼ė°ģ ģ¼ė” ė¤ė„ø ģ¬ėė¤ģ“ ģ ė¦¬ķ“ėģ ķ¬ģ¤ķ ģ ė³“ź³ ź³µė¶ķź² ėė ź²½ģ°ź° ė§ģė¤.
ź·øė¬ė ģ“ė ź² ź³µė¶ė„¼ ķė ź²½ģ°, ķ“ė¹ ķØė¬ė¤ģģ ź·¼ė³øģ ģø ė°ģ ģ“ģ ė ģė¦¬ģ ėķ“ģ ź¹ģ“ ķģ ķźø° ė³“ė¤ė ėŖ ź°ģ§ ķ¹ģ§ģ“ė ģ„ėØģ ģ ėؼģ ķģµķź² ėė ź²½ģ°ź° ė§ģė ź² ź°ė¤.
ź·øėģ ģģ ķØģė āģė”ź² ź³µė¶ķ“ģ¼ķė ź²āģ“ė¼ė ėėģ¼ė” ė°ģė¤ģģģ§ė§, ėģ¤ģ ź³°ź³°ķ ģź°ķ“ė³“ė ź·øė„ ģ“ė¦“ ė ė°°ģ ė ģķģ ģø ķØģģ ź°ė ģ ź·øėė” ķė”ź·øėė°ģ¼ė” źµ¬ķķ ź²ģ“ė¼ė ź°ė ģ“ė¼ė ź²ģ ź¹Øė«ź³ ź½¤ė ķė¬“ķė źø°ģµģ“ ģė¤.
ź·øėģ ķģė ģ“ ķ¬ģ¤ķ ģģ āģģ ķØģė ģ“ė°ģ ė° ķ¹ģ§ģ ź°ģ§ ķØģāė¼ź³ ģ¤ėŖ ķģ§ ģģė ź²ģ“ė¤. ź°ģøģ ģø ģź°ģ“źø°ė ķģ§ė§, ėė¶ė¶ģ ģ¬ėė¤ģ ģ“ė¦“ ė ģ“ėÆø ķźµģģ ķØģģ ėķ ģ ģģ ź°ė ģ ķģµķźø° ėė¬øģ, āģķģ ģø ķØģāė¼ė ķ¤ģėė” ģ ź·¼ķė ź²ģ“ ģ¤ķė ¤ ģ“ķ“ź° ė¹ ė„¼ ź²ģ“ė¼ź³ ģź°ķė¤.
ģ“ģØė ķģė ģ“ ķ¬ģ¤ķ ģ ķµķ“ ģģ ķØģė ģ ķ ģė”ģ“ ź°ė ģ“ ģėė¼ė ģ“ģ¼źø°ė„¼ ķź³ ģ¶ģź³ , ėķėƼźµ ģė¬“ źµģ”ģ ė°ģ ģ¬ėģ“ė¼ė©“ ėźµ¬ė ģ§ ė¤ ģµģķź² ė°ģė¤ģ¼ ģ ģė ź°ė ģ“ė¼ė ź²ģ ģ“ģ¼źø°ķź³ ģ¶ģė¤.
ė¬¼ė” ģģ ķØģė„¼ ģ¬ģ©ķģ¬ ģ“ė¤ ģģ¼ė” ķė”ź·øėØģ ģ¤ź³ķė ź²ģ“ ķė„ķ ģ¤ź³ģøģ§ģ ź°ģ ģ“ģ¼źø°ė ģė¬“ źµģ”ź³¼ģ ģ ģźø° ėė¬øģ ė³ėė” ź³µė¶ė„¼ ķ“ģ¼ź² ģ§ė§, ģ ģ“ė ķØģķ ķė”ź·øėė°ģģ ģ¤ģķ ķ¤ģėė” ģ“ģ¼źø°ķź³ ģė ģģ ķØģ
ģ ė¶ė³ģ±
ģ ėķ ģ“ķ“ ģ ėė ź·øė ź² ģ“ė ¤ģ“ ź²ģ ģė ź²ģ“ė¼ź³ ģź°ķė¤.
ė¤ģ ķ¬ģ¤ķ
ģģė ģģ ķØģģ ķØź» ķØģķ ķė”ź·øėė°ģģ ģ¤ģķ ź°ė
ģ¤ ķėģø ė¶ė³ģ±
ģ ėķ ģ“ģ¼źø°ė„¼ ķ“ė³“ė ¤ź³ ķė¤.
ģ“ģģ¼ė” ģķģģ źø°ģķ ķė”ź·øėė° ķØė¬ė¤ģ, ģģ ķØģ ķ¬ģ¤ķ ģ ė§ģ¹ė¤.
- ķØģķ ķė”ź·øėė°
- Functional Programming
- ģģ ķØģ
- ģ¬ģ“ė ģ“ķķø
- Pure Functions
- Side Effects
ź“ė Ø ķ¬ģ¤ķ ė³“ė¬ź°źø°
ė³ķģ§ ģė ģķė„¼ ģ ģ§ķė ė°©ė², ė¶ė³ģ±(Immutable)
[ė²ģ] ķė”ź·øėėØøė„¼ ģķ ģ¹“ķ ź³ ė¦¬ ģ“ė” - 9. ķØģ ķģ
[ė²ģ] ķė”ź·øėėØøė„¼ ģķ ģ¹“ķ ź³ ė¦¬ ģ“ė” - 8. ķķ°ģ ķ¹ģ±
[ė²ģ] ķė”ź·øėėØøė„¼ ģķ ģ¹“ķ ź³ ė¦¬ ģ“ė” - 7. ķķ°
[ė²ģ] ķė”ź·øėėØøė„¼ ģķ ģ¹“ķ ź³ ė¦¬ ģ“ė” - 6. ėØģķ ėģģ ķģ