์๋ฅผ ๋ค์ด
void Do() {
A();
B();
C();
}
์ ์ฝ๋๋ฅผ
void Do() {
(MyDelegate = () => {ย ย ย ย A();ย ย ย ย B();ย ย ย ย C();ย ย ย ย })();
}
์ด๋ ๊ฒ.... ์ฝ๋ ์ค์ด ๊ธธ์ด์ง๋ ๊ฒ๋ ์ด๋ค ๋๋ก๋ ๋ฌด์ํ ์ ์๋ ๊ฒฝ์ฐ๋ ์๊ณ , ์์ A,B,C ํจ์๊ฐ ๋ญ๊ฐ ๊ณตํต์ ์ ๊ณต์ ํ ๋๋ ๋๋ค์ ์ด๋ ๊ฒ ์จ๋ ๋จ?
์ ์ฅํด๋๊ณ ์ฌ์ฌ์ฉํ๋๊ฑฐ ์๋๋ฉด ๊ตณ์ด ์ด๋ ๊ฒ ํ ์ด์ ๊ฐ ์์ง ์์?
MyDelegate๋ผ๊ณ ๋ณ์๋ช ์ ๋ ๊ฒ ์จ์ ๊ทธ๋ ์ง.. ์๋ฅผ ๋ค์ด์ ์ ๋ณ์๋ช '~๋ก์ ๋ค์ ์ด๊ฒ๋ค์ ์คํํ์์ค' ์๋ฏธ๋ฅผ ๋ด์ ์ด๋ฆ์ผ๋ก ์ง์ ํ ๊ฒฝ์ฐ๋ ๊ด์ฐฎ์ ๊ฒ ๊ฐ์๋ฐ... 'PerformTransitionAction' ์ด๋ ๊ฒ๋ผ๋ ๊ฐ.. (transition์ FSM์ ์ฉ์ดใ ใ )
๊ทธ๋ผ ๊ทธ๋ฅ ์ฒซ๋ฒ์งธ์ฒ๋ผ ์ฐ๋๊ฒ ๋ง๋๋ฏ
์๋๋ฉด ์ด๊ธฐํํ ๋ MyDelegate = () => { A(); B(); C(); }๋ฅผ ํ๊ณ Do์์๋ MyDelegate?.Invoke()๋ง ํด์ฃผ๊ฑฐ๋
ใ ใ ๊ฐ์ฌ์
๊ตณ์ด? ๋ผ๋ ์๊ฐ์ ํ๊ฒ ๋จ ๋ธ๋ฆฌ๊ฒ์ดํธ๋ฅผ ์ธ๊ฑฐ๋ฉด ๊ทธ๋ฅ ์ด๋ฒคํธ ํ๋ ๋ง๋ค์ด์ ํจ์ ๋ค ๋ฃ๊ณ action?,Invoke() ๋ฅผ ํ๋๊ฐ ์ฝ๋๊ธธ์ด ๊ธธ์ด์ง๋ ๊ฒ ๋๋ฌธ์ ๋๋ค์์ ์ ๋ ๊ฒ ์ฐ๋๊ฒ๋ ๋ญ๊ฐ๊ฐ ๋ญ๊ฐ๊ณ
๊ทธ๋ ๋ค๊ณ ABC๋ฅผ ํฉ์น๊ธฐ์๋ ์๋ค ์ญํ ์ด ๋๋ฌด ๋ค๋ฅธ ๊ฒฝ์ฐ๋ ์์ด์..
์ ์ค๋ง Action ์ด๊ฑฐ...
๋์๋ง ํ๋ฉด ๋๊ฐ ๋ณด๊ธฐ์ ์ข์ ์ฝ๋๊ฐ ์ข์์ฝ๋์ ํ๊ณ ์ถ์๋๋ก ํด
๊ทผ๋ฐ ๋๋ผ๋ฉด ์ค๊ฐ์ ๋ฆฌํด์ ๋ฃ๊ณ ์ถ์ ๊ฒฝ์ฐ ์๋๋ฉด ๊ตณ์ด ์ ๋ ๊ฒ ์ํ ๋ฏ
๊ฐ์ ๋์์ ํ๋๋ฐ ์ ๊ฑธ ์ดํดํ๊ธฐ ์ํด์ ์์์ผ ํ๋๊ฒ ํจ์ฌ ๋ง์. ๋ณ๋ก ์ข์ง ์์. ๋จ์ํ๊ฒ ํด