14. Infix, Inline, Local Functions
infix, inline, 지역 함수
치트시트
infix
infix fun T.func(param)멤버/확장 함수 + 단일 파라미터
DSL, 가독성 개선
inline
고차 함수 호출 오버헤드 줄임
람다 객체 생성 피함
성능-critical 코드, 유틸 함수에서만 신중히
local function
함수 내부에 함수 정의
캡슐화 + 중복 제거
스코프 밖 노출 방지
1) Infix 함수 (중위 함수)
선언 조건:
멤버 함수 또는 확장 함수여야 함
단일 파라미터만 가질 수 있음
infix키워드 붙이기
서버 활용
DSL 스타일 API 설계
예: 권한 DSL →
user hasRole Role.ADMIN
👉 자바에는 없는 기능. 가독성 높은 DSL 구현에 적합.
2) Inline 함수
함수 호출 대신 본문을 호출 지점에 복붙하는 방식
함수 호출 오버헤드 제거, 특히 고차 함수에서 유용
장점:
고차 함수에서 람다 객체 생성/캡처 비용 절감
성능-critical 코드에서 유리
단점:
코드 크기 증가 가능 → 신중히 사용
너무 많이 쓰면 오히려 성능 저하
서버 활용
공통 유틸 (로깅, 트랜잭션 처리, 성능 측정)
try-with-resources 유틸을 inline + 람다로 구현 가능
3) 지역 함수 (Local function)
함수 안에 함수를 정의
해당 스코프 내부에서만 사용 가능 → 캡슐화 강화
장점:
코드 중복 제거
외부로 노출하지 않아도 됨 (불필요한 public 메소드 방지)
단점:
깊게 중첩되면 가독성 저하
서버 활용
유효성 검증 로직 캡슐화
비즈니스 규칙 처리 중 공통 서브 로직 정리
4) 서버 개발 실전 예시
A. Infix DSL
B. Inline + Resource 관리
C. Local function으로 중복 제거
Last updated