Coding Planet

[μžλ°”μ˜ 정석 ]λžŒλ‹€μ‹(Lambda Expressions) 1 - λžŒλ‹€μ‹ ꡬ쑰와 μž‘μ„±λ²• λ³Έλ¬Έ

πŸ’» Java Study/Java 이둠 정리

[μžλ°”μ˜ 정석 ]λžŒλ‹€μ‹(Lambda Expressions) 1 - λžŒλ‹€μ‹ ꡬ쑰와 μž‘μ„±λ²•

jhj.sharon 2023. 8. 26. 00:46
λ°˜μ‘ν˜•
μžλ°”μ˜ λžŒλ‹€μ‹(Lambda Expressions)은 Java 8λΆ€ν„° λ„μž…λœ κΈ°λŠ₯으둜, κ°„κ²°ν•˜κ²Œ ν•¨μˆ˜λ₯Ό ν‘œν˜„ν•  수 있게 ν•΄μ€€λ‹€. λžŒλ‹€μ‹μ΄λž€ λ§κ·Έλž˜λ„ λ©”μ„œλ“œλ₯Ό ν•˜λ‚˜μ˜ 식(expression)으둜 ν‘œν˜„ν•œ 것이닀. λžŒλ‹€μ‹μœΌλ‘œ ν‘œν˜„ν•˜λ©΄ λ©”μ„œλ“œμ˜ 이름과 λ°˜ν™˜κ°’μ΄ μ—†μ–΄μ§€λ―€λ‘œ λžŒλ‹€μ‹μ„ 읡λͺ…ν•¨μˆ˜λΌκ³ λ„ ν•œλ‹€.

 

| 기본ꡬ쑰

  • νŒŒλΌλ―Έν„° : λ©”μ„œλ“œμ˜ νŒŒλΌλ―Έν„°μ™€ λ™μΌν•˜λ©° κ΄„ν˜Έ '()'μ•ˆμ— μ„ μ–Έν•œλ‹€. νŒŒλΌλ―Έν„°μ˜ νƒ€μž…μ„ λͺ…μ‹œν•  μˆ˜λ„ 있고 μƒλž΅ν•  μˆ˜λ„ μžˆλ‹€.
  • ν™”μ‚΄ν‘œ : νŒŒλΌλ―Έν„°μ™€ 본문을 κ΅¬λΆ„ν•˜λŠ” 역할을 ν•œλ‹€.
  • expression_body : ν•΄λ‹Ή ν•¨μˆ˜κ°€ μˆ˜ν–‰ν•  λ‘œμ§μ„ λ‹΄κ³  μžˆλ‹€.
  • λ©”μ„œλ“œμ—μ„œ 이름과 λ°˜ν™˜νƒ€μž…μ„ μ œκ±°ν•˜κ³  λ§€κ°œλ³€μˆ˜ 선언뢀와 λͺΈν†΅ 사이에 ->λ₯Ό μΆ”κ°€ν•œ 것이닀.
(parameters) -> expression_body

 

| λžŒλ‹€μ‹ μž‘μ„±ν•˜κΈ°

  • λ°˜ν™˜κ°’μ΄ μžˆλŠ” λ©”μ„œλ“œμ˜ 경우, returnλ¬Έ λŒ€μ‹  식(expression)으둜 λŒ€μ²΄ν•  수 μžˆλ‹€. 이 λ•ŒλŠ” λ¬Έμž₯(statement)둜 λλ‚œ 것이 μ•„λ‹Œ μ‹μœΌλ‘œ λλ‚¬μœΌλ―€λ‘œ ;λ₯Ό 뢙이지 μ•ŠλŠ”λ‹€.
  • λžŒλ‹€μ‹μ— μ„ μ–Έλœ λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ€ 좔둠이 κ°€λŠ₯ν•œ 경우 μƒλž΅ν•  수 μžˆλŠ”λ°, λŒ€λΆ€λΆ„μ˜ 경우 μƒλž΅ κ°€λŠ₯ν•˜λ‹€.
//두 κ°’ μ€‘μ—μ„œ 큰 값을 λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œ maxλ₯Ό λžŒλ‹€μ‹μœΌλ‘œ ν‘œν˜„ν•˜κΈ°
// λžŒλ‹€μ‹μ„ μ‚¬μš©ν•˜μ§€ μ•Šμ€ 예
int max(int a, int b){
	return a > b ? a:b
}

// λžŒλ‹€μ‹μ„ μ‚¬μš©ν•œ 예
(a, b) -> a > b? a:b

 

  • λ§€κ°œλ³€μˆ˜κ°€ ν•˜λ‚˜λΏμΈ κ²½μš°μ—λŠ” κ΄„ν˜Έ()λ₯Ό μƒλž΅ν•  수 μžˆλ‹€. 단, λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ΄ 있으면 κ΄„ν˜Έ()λ₯Ό μƒλž΅ν•  수 μ—†λ‹€.
  • 단, λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…이 μžˆμœΌλ©΄ κ΄„ν˜Έ μƒλž΅ν•  μˆ˜ μ—†λ‹€.
//λ§€κ°œλ³€μˆ˜ ν•˜λ‚˜μΌ 경우 μƒλž΅κ°€λŠ₯
(a) -> a*a
 a -> a*a
 
 //단, λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ΄ 있으면 κ΄„ν˜Έ μƒλž΅ν•  수 μ—†λ‹€.
 (int a) -> a*a
  int a  -> a*a // μ—λŸ¬

 

  • λ§ˆμ°¬κ°€μ§€λ‘œ κ΄„ν˜Έ μ•ˆμ˜ λ¬Έμž₯이 ν•˜λ‚˜μΌ λ•ŒλŠ” κ΄„ν˜Έλ₯Ό μƒλž΅ν•  수 μžˆλ‹€. 이 λ•Œ λ¬Έμž₯의 끝에 ;λ₯Ό 뢙이지 μ•Šμ•„μ•Όν•œλ‹€λŠ” 것에 μ£Όμ˜ν•˜λΌ.
  • κ·ΈλŸ¬λ‚˜, κ΄„ν˜Έ μ•ˆμ˜ λ¬Έμž₯이 return문일 경우 κ΄„ν˜Έλ₯Ό μƒλž΅ν•  수 μ—†λ‹€.
(String name, int i) -> {System.out.println(name + "=" + i);}

//';' 뢙이지 μ•Šλ„λ‘ 주의!
(String name, int i) -> System.out.println(name + "=" + i)

//μ—λŸ¬
(int a, int b) -> return a > b ? a : b

 

λ°˜μ‘ν˜•
Comments