람다가 필요한 이유
값 매개변수화(Value Parameterization)
- 문자값(Value), 숫자값(Value)처럼 구체적인 값을 메서드(함수) 안에 두는 것이 아니라, 매개변수(파라미터)를통해 외부에서 전달 받도록 해서, 메서드의 동작을 달리하고, 재사용성을 높이는 방법을 값 매개변수화라 한다.
- 값 매개변수화, 값 파라미터화 등으로 부른다.
동작 매개변수화(Behavior Parameterization)
- 코드 조각(코드의 동작 방법, 로직, Behavior)을 메서드(함수) 안에 두는 것이 아니라, 매개변수(파라미터)를 통해서 외부에서 전달 받도록 해서, 메서드의 동작을 달리하고, 재사용성을 높이는 방법을 동작 매개변수화라 한다.
- 동작 매개변수화, 동작 파라미터화, 행동 매개변수화(파라미터화), 행위 파라미터화 등으로 부른다.
정리하면 다음과 같다.
- 값 매개변수화: 값(숫자, 문자열 등)을 바꿔가며 메서드(함수)의 동작을 달리 함
- 동작 매개변수화: 어떤 동작(로직)을 수행할지를 메서드(함수)에 전달(인스턴스 참조, 람다 등)
참조값을 직접 전달하는 방식으로 익명 클래스의 참조값을 매개변수에 직접 전달 가능하지만 해당 부분의 간소화를 위해 람다를 사용하게 된다.
- Procedure Member 와 같은 참조형 타입(인스턴스)
함수와 메서드
- 함수
- 객체지향 언어라 하더라도, 예를 들어 Python이나 JavaScript처럼 클래스 밖에서도 정의할 수 있는 "함수" 개념을 지원하는 경우, 이를 그냥 함수라고 부른다.
- 호출 시에 객체 인스턴스가 필요 없다. 보통 이름(매개변수) 형태로 호출된다.
- 메서드
- 클래스(또는 객체)에 속해 있는 "함수"이다.
- 객체의 상태(필드, 프로퍼티 등)에 직접 접근하거나, 객체가 제공해야 할 기능을 구현할 수 있다
- Java, C++, C#, Python 등 대부분의 객체지향 언어에서 클래스 내부에 정의된 함수는 보통 "메서드"라고 부른다.
- 보통 객체(인스턴스).메서드이름(매개변수) 형태로 호출한다
정리
- 메서드는 기본적으로 클래스(객체) 내부의 함수를 가리키며, 객체의 상태와 밀접한 관련이 있다.