Lambda
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ณ๋ ฌ์ฒ๋ฆฌ์ ์ด๋ฒคํธ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ ํฉํ๊ธฐ ๋๋ฌธ์ ๋ถ๊ฐ๋๊ณ ์๋ค. ์๋ฐ๋ ํจ์์ ํ๋ก๊ทธ๋๋ฐ์ ์ํด ๋๋ค์์ ๋์ ํ๋ค.
๋๋ค์์ ์ต๋ช ํจ์๋ฅผ ์์ฑํ๊ธฐ ์ํ ์์ผ๋ก ๊ฐ์ฒด ์งํฅ ์ธ์ด๋ณด๋ค๋ ํจ์ ์งํฅ ์ธ์ด์ ๊ฐ๊น๋ค.
์๋ฐ ์ฝ๋๊ฐ ๋งค์ฐ ๊ฐ๊ฒฐ ํด์ง
์ปฌ๋ ์ ์ ์์๋ฅผ ํํฐ๋งํ๊ฑฐ๋ ๋งคํํด ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฝ๊ฒ ์ง๊ณํ ์ ์์
๋๋ค๋?
Lambda๋ ๋ฉ์๋๋ฅผ ํ๋์ ์์ผ๋ก ํํํ ๊ฒ์ผ๋ก, ์ต๋ช ๋ฉ์๋ ์์ฑ ๋ฌธ๋ฒ์ด๋ผ ๋ณผ ์ ์๋ค. ์ฆ, ๋ฉ์๋๋ช ์์ด ๊ตฌํ๋ถ๋ง์ผ๋ก ์ ์ธํ ๊ฒ์ด๋ค. ํ์ง๋ง Java์ ๋ฉ์๋๋ ๋ฉ์๋ ์์ฒด๋ก ํผ์ ์ ์ธํ์ฌ ์ฐ์ผ ์ ์์ผ๋ฉฐ, ๋ฌด์กฐ๊ฑด Class ๊ตฌ์ฑ๋ฉค๋ฒ๋ก ์ ์ธ๋์ด์ผํ๋ค. Lambda๋ฅผ ํตํด์ ์์ฑ๋๋ ๊ฒ์ ๋ฉ์๋ ์์ฒด๊ฐ ์๋ ์คํ๋ฌธ(๋ฉ์๋)๋ฅผ ๊ฐ์ง ๊ฐ์ฒด์ด๋ค. ๋๋ค์์ ์ผ๋ฐ์ ์ธ ๊ฐ์ฒด๊ฐ ์๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์ต๋ช ๊ตฌํ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
๋๋ค์์ ํํ๋ ๋งค๊ฐ ๋ณ์๋ฅผ ๊ฐ์ง ์ฝ๋ ๋ธ๋ก์ด์ง๋ง, ๋ฐํ์ ์์ ์ต๋ช ๊ตฌํ ๊ฐ์ฒด๋ฅผ ์์ฑ
๋๋ค์์ (๋งค๊ฐ๋ณ์)->{์คํ์ฝ๋}
์ ํํ๋ก ์์ฑ๋๋ค.
๋๋ค์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
(ํ์ ๋งค๊ฐ๋ณ์, ...)
: ์ค๋ฅธ์ชฝ ์ค๊ดํธ {}๋ฅผ ์คํํ๊ธฐ ์ํด ํ์ํ ๊ฐ์ ์ ๊ณตํ๋ ์ญํ , ๋งค๊ฐ๋ณ์ ์ด๋ฆ์ ๊ฐ๋ฐ์๊ฐ ์์ ๋กญ๊ฒ ์ค ์ ์๋ค.->
: ๋งค๊ฐ ๋ณ์๋ฅผ ์ด์ฉํด์ ์ค๊ดํธ{}
๋ฅผ ์คํ
๋งค๊ฐ ๋ณ์ ํ์ ์ ๋ฐํ์์์ ๋์ ๋๋ ๊ฐ์ ๋ฐ๋ผ ์๋์ผ๋ก ์ธ์๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค์์์๋ ๋งค๊ฐ ๋ณ์์ ํ์ ์ ์ผ๋ฐ์ ์ผ๋ก ์ธ๊ธํ์ง ์๋๋ค.
ํ๋์ ๋งค๊ฐ๋ณ์๋ง ์๋ค๋ฉด ()
๋ฅผ ์๋ตํ ์ ์๊ณ , ํ๋์ ์คํ๋ฌธ๋ง ์๋ค๋ฉด {}
๋ ์๋ตํ ์ ์๋ค.
๋ง์ฝ ๋งค๊ฐ๋ณ์๊ฐ ์๋ค๋ฉด ๋น๊ดํธ()
๋ฅผ ๋ฐ๋์ ์ฌ์ฉํด์ผํ๋ค.
์คํ๋ฌธ์ ์คํํ๊ณ ๊ฒฐ๊ณผ๊ฐ์ ๋ฆฌํดํด์ผํ๋ค๋ฉด ์์ ๊ฐ์ด return๋ฌธ์ผ๋ก ๊ฒฐ๊ณผ๊ฐ์ ์ง์ ํ ์ ์๋ค.
๋ง์ฝ {}
์ return๋ฌธ๋ง ์๋ ๊ฒฝ์ฐ์๋ ์์ ๊ฐ์ด return๋ฌธ์ ์ฌ์ฉํ์ง ์๊ณ ์์ฑํ ์ ์๋ค.
ํ๊ฒ ํ์
๊ณผ ํจ์์ ์ธํฐํ์ด์ค
๋๋ค์์ ์ธํฐํ์ด์ค ๋ณ์์ ๋์ ๋๋ค. ์ฆ, ๋๋ค์์ ์ธํฐํ์ด์ค์ ์ต๋ช ๊ตฌํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค๋ ๋ป์ด๋ค. ์ธํฐํ์ด์ค๋ ์ง์ ๊ฐ์ฒดํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ต๋ช ๊ตฌํ ํด๋์ค๋ฅผ ์์ฑํ๊ณ ๊ฐ์ฒดํํ๋ค. ๋๋ค์์ ๋์ ๋ ์ธํฐํ์ด์ค์ ์ข ๋ฅ์ ๋ฐ๋ผ ์์ฑ๋ฒ์ด ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ๋๋ค์์ด ๋์ ๋ ์ธํฐํ์ด์ค๋ฅผ ๋๋ค์์ ํ๊ฒํ์ (target type)์ด๋ผ ํ๋ค.
@FunctionallInterface ํจ์์ ์ธํฐํ์ด์ค
๋๋ค์์ด ํ๋์ ๋ฉ์๋๋ฅผ ์ ์ํ๊ธฐ ๋๋ฌธ์ ๋ ๊ฐ ์ด์์ ์ถ์ ๋ฉ์๋๊ฐ ์ ์ธ๋ ์ธํฐํ์ด์ค๋ ๋๋ค์์ ์ด์ฉํด์ ๊ตฌํ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค. ์ฆ, ํ๋์ ์ถ์ ๋ฉ์๋๊ฐ ์ ์ธ๋ ์ธํฐํ์ด์ค๋ง์ด ๋๋ค์์ ํ๊ฒ ํ์
์ด ๋ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํจ์์ ์ธํฐํ์ด์ค๋ผ ํ๋ค. ์ธํฐํ์ด์ค ์ ์ธ์ @FunctionallInterface
์ด๋
ธํ
์ด์
์ ๋ถ์ด๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ๋ ๊ฐ ์ด์์ ์ถ์ ๋ฉ์๋๊ฐ ์ ์ธ๋์ง ์๋๋ก ์ฒดํนํด์ค๋ค.
๋งค๊ฐ ๋ณ์์ ๋ฆฌํด๊ฐ์ด ์๋ ๋๋ค์
method()๊ฐ ๋งค๊ฐ๋ณ์ ๊ฐ์ ๊ฐ์ง์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค์์์ ๋งค๊ฐ๋ณ์๊ฐ ์๋ค.
๋๋ค์์ด ๋์
๋ ์ธํฐํ์ด์ค์ ์ฐธ์กฐ ๋ณ์๋ ์์ ๊ฐ์ด method()๋ฅผ ํธ์ถํ ์ ์์ผ๋ฉฐ, ํธ์ถ์ ๋๋ค์์ {...}
๋ฅผ ์คํ์ํจ๋ค.
๋งค๊ฐ ๋ณ์๊ฐ ์๋ ๋๋ค์
๋ฆฌํด๊ฐ์ด ์๋ ๋๋ค์
ํด๋์ค ๋ฉค๋ฒ์ ๋ก์ปฌ ๋ณ์ ์ฌ์ฉ
๋๋ค์์ ์คํ ๋ธ๋ก์๋ ํด๋์ค์ ๋ฉค๋ฒ(ํ๋, ๋ฉ์๋) ๋ฐ ๋ก์ปฌ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
ํด๋์ค ๋ฉค๋ฒ ์ฌ์ฉ
ํด๋์ค์ ๋ฉค๋ฒ์ธ ํ๋์ ๋ฉ์๋๋ ์ ์ฝ์์ด ์ฌ์ฉํ ์ ์๋ค. ํ์ง๋ง this ํค์๋๋ฅผ ์ฌ์ฉํ ๋๋ ์ฃผ์๊ฐ ํ์ํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ต๋ช ๊ฐ์ฒด ๋ด๋ถ์์ this๋ ์ต๋ช ๊ฐ์ฒด์ ์ฐธ์กฐ์ด์ง๋ง, ๋๋ค์์์ this๋ ๋ด๋ถ์ ์ผ๋ก ์์ฑ๋๋ ๋๋ค์์ ์คํํ ๊ฐ์ฒด์ ์ฐธ์กฐ์ด๋ค.
๋ก์ปฌ ๋ณ์ ์ฌ์ฉ
๋๋ค์์ ๋ฉ์๋ ๋ด๋ถ์์ ์ฃผ๋ก ์์ฑ๋๋ฏ๋ก ๋ก์ปฌ ์ต๋ช ๊ตฌํ ๊ฐ์ฒด๋ฅผ ์์ฑ์ํจ๋ค๊ณ ๋ด์ผํ๋ค. ๋๋ค์์์ ๋ฐ๊นฅ ํด๋์ค์ ํ๋๋ ๋ฉ์๋๋ ์ ํ ์์ด ์ฌ์ฉํ ์ ์์ผ๋, ๋ฉ์๋์ ๋งค๊ฐ๋ณ์ ๋๋ ๋ก์ปฌ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ๋ ๋ณ์๋ final ํน์ฑ์ ๊ฐ์ ธ์ผํ๋ค.
[09. ์ค์ฒฉ ํด๋์ค์ ์ค์ฒฉ ์ธํฐํ์ด์ค - ์ต๋ช ๊ฐ์ฒด์ ๋ก์ปฌ ๋ณ์ ์ฌ์ฉ ๋ฅผ ์ฐธ์กฐ]
๋งค๊ฐ ๋ณ์ ๋๋ ๋ก์ปฌ ๋ณ์๋ฅผ ๋๋ค์์์ ์ฝ๋ ๊ฒ์ ํ์ฉ๋์ง๋ง, ๋๋ค์ ๋ด๋ถ ๋๋ ์ธ๋ถ์์ ๋ณ๊ฒฝํ ์ ์๋ค.
Last updated