Skip to content

Latest commit

Β 

History

History
81 lines (59 loc) Β· 2.55 KB

Lambda.md

File metadata and controls

81 lines (59 loc) Β· 2.55 KB

λžŒλ‹€ ν‘œν˜„μ‹ (Lambda Expression)

1. λžŒλ‹€μ‹μ΄λž€?

λžŒλ‹€μ‹μ€ λ©”μ„œλ“œλ₯Ό ν•˜λ‚˜μ˜ 식(expression)으둜 ν‘œν˜„ν•œ 것.

- 객체 지ν–₯ μ–Έμ–΄λ³΄λ‹€λŠ” ν•¨μˆ˜ 지ν–₯ 언어에 가깝닀.  
- ν•¨μˆ˜λ₯Ό κ°„λž΅ν•˜λ©΄μ„œλ„ λͺ…ν™•ν•œ μ‹μœΌλ‘œ ν‘œν˜„ν•  수 μžˆλ„λ‘ ν•΄μ€€λ‹€.  
- λ©”μ„œλ“œλ₯Ό λžŒλ‹€μ‹μœΌλ‘œ ν‘œν˜„ν•˜λ©΄ λ©”μ„œλ“œμ˜ 이름 및 λ°˜ν™˜ 값이 μ—†μ–΄μ§€λ―€λ‘œ 읡λͺ… ν•¨μˆ˜ 라고도 ν•œλ‹€.  
- λžŒλ‹€μ‹μ˜ ν˜•νƒœλŠ” 맀개 λ³€μˆ˜λ₯Ό 가진 μ½”λ“œ λΈ”λ‘μ΄μ§€λ§Œ λŸ°νƒ€μž„ μ‹œμ—λŠ” 읡λͺ… κ΅¬ν˜„ 객체λ₯Ό μƒμ„±ν•œλ‹€.  

1-1. λžŒλ‹€μ‹ μ‚¬μš©

(λ§€κ°œλ³€μˆ˜, ...) -> { μ‹€ν–‰λ¬Έ ... }

(λ§€κ°œλ³€μˆ˜, ...)λŠ” 였λ₯Έμͺ½ μ€‘κ΄„ν˜Έ { } 블둝을 μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ 값을 μ œκ³΅ν•˜λŠ” 역할을 ν•œλ‹€.
-> κΈ°ν˜ΈλŠ” 맀개 λ³€μˆ˜λ₯Ό μ΄μš©ν•΄μ„œ μ€‘κ΄„ν˜Έ { } λ°”λ””λ₯Ό μ‹€ν–‰ν•œλ‹€λŠ” 뜻으둜 ν•΄μ„ν•˜λ©΄ λœλ‹€.

ex) μ‚¬μš© μ˜ˆμ‹œ

interface ExFunctionInterface
{
    public void method();
}

public class ExFunctionInterfaceTest
{
    public static void main(String[] args)
    {
        ExFunctionInterface test = new ExFunctionInterface() {

            public void method() {
                System.out.println("test");
            }
        };

        test.method();
    }
}

// Lambda 적용
public class ExFunctionInterfaceTest
{
    public static void main(String[] args)
    {
        ExFunctionInterface test = () -> System.out.println("test");

        test.method();
    }
}
  • λ°˜ν™˜ 값이 μžˆλŠ” λ©”μ„œλ“œμ˜ 경우 return λŒ€μ‹  expression 으둜 λŒ€μ‹ ν•  수 μžˆλ‹€.
    (expression인 경우 ; λ₯Ό 뢙이지 μ•ŠλŠ”λ‹€.)
  • λžŒλ‹€μ‹μ— μ„ μ–Έλœ λ§€κ°œλ³€μˆ˜ νƒ€μž…μ€ 좔둠이 κ°€λŠ₯ν•œ 경우 μƒλž΅ κ°€λŠ₯ (λŒ€λΆ€λΆ„ μƒλž΅κ°€λŠ₯)
  • 맀개 λ³€μˆ˜κ°€ ν•˜λ‚˜μΈ 경우 ()λ₯Ό μƒλž΅ν•  수 μžˆλ‹€.
  • {} μ•ˆ λ¬Έμž₯이 ν•˜λ‚˜μΈ 경우 μƒλž΅ν•  수 μžˆλ‹€.

2. λžŒλ‹€μ‹μ˜ μž₯단점

2-1. λžŒλ‹€μ‹ μž₯점

  1. μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ²Œ λ§Œλ“€ 수 μžˆλ‹€.

  2. μ½”λ“œκ°€ κ°„κ²°ν•˜κ³  식에 개발자의 μ˜λ„κ°€ λͺ…ν™•νžˆ λ“œλŸ¬λ‚˜λ―€λ‘œ 가독성이 ν–₯μƒλœλ‹€.

  3. ν•¨μˆ˜λ₯Ό λ§Œλ“œλŠ” 과정없이 ν•œλ²ˆμ— μ²˜λ¦¬ν•  수 μžˆκΈ°μ— μ½”λ”©ν•˜λŠ” μ‹œκ°„μ΄ 쀄어든닀.

  4. λ³‘λ ¬ν”„λ‘œκ·Έλž˜λ°μ΄ μš©μ΄ν•˜λ‹€.

2-2. λžŒλ‹€μ‹ 단점

  1. λžŒλ‹€λ₯Ό μ‚¬μš©ν•˜λ©΄μ„œ λ§Œλ“œλŠ” 무λͺ…ν•¨μˆ˜λŠ” μž¬μ‚¬μš©μ΄ λΆˆκ°€λŠ₯ν•˜λ‹€.

  2. 디버깅이 λ‹€μ†Œ κΉŒλ‹€λ‘­λ‹€.

  3. λžŒλ‹€λ₯Ό λ‚¨λ°œν•˜λ©΄ μ½”λ“œκ°€ μ§€μ €λΆ„ν•΄μ§ˆ 수 μžˆλ‹€. (λΉ„μŠ·ν•œ ν•¨μˆ˜λ₯Ό 계속 쀑볡생성할 κ°€λŠ₯성이 λ†’μŒ)

  4. μž¬κ·€λ‘œ λ§Œλ“€κ²½μš°μ—λŠ” λ‹€μ†Œ λΆ€μ ν•©ν•œλ©΄μ΄ μžˆλ‹€.