자바에서는 함수를 직접 함수 인자로 받을 수 없으니까 함수형 인터페이스를 썼는데
코틀린은 걍 직접 함수를 받을 수 있잖음?
그런데도 굳이 함수형 인터페이스를 남겨둔 이유가 있음?
std의 고차함수들도 인자를 그냥 함수 타입으로 받던데..
자바에서는 함수를 직접 함수 인자로 받을 수 없으니까 함수형 인터페이스를 썼는데
코틀린은 걍 직접 함수를 받을 수 있잖음?
그런데도 굳이 함수형 인터페이스를 남겨둔 이유가 있음?
std의 고차함수들도 인자를 그냥 함수 타입으로 받던데..
타입으로 구분 가능해짐 - dc App
함수도 타입이 있잖아
(Int) -> Unit 으로 쓰면 될껄 IntConsumer로 써야할 이유가 뭐냐는 거임
뷰에 터치랑 롱터치 이벤트 리스너 추가할 때 리스너 타입이 둘다 (View) -> Unit 일 수 있지만 함수형 인터페이스 쓰면 OnClickListener, OnLongClickListener 구분해서 줄 수 있겠지 당연히 인터페이스니까 저 두 리스너에 InteractionListener라는 상위 인터페이스로 묶을 수도 있고. 그냥 인터페이스랑 활용은 똑같은데 람다식처럼 쓸 수 있는 신택스 슈거라고 보면 됨 - dc App
이거 잘 활용한 코드 보고 싶으면 coroutine의 FlowCollector 보면 됨. collect 함수는 FlowCollector를 인자로 받는데 collect 쓰는 사용자 입장에서는 단순히 람다식을 추가하는것처럼 편하게 쓸 수 있지만 내부에서는 SafeCollector, SendingCollector 등 다양한 타입으로 변환되어서 Channel, Flow, 테스팅까지 지원됨 - dc App
그냥 자바와의 호환성을 위해 존재하는 거임 코틀린만 사용할거면 일반 함수로 받는게 자연스러운 접근임
타입 alias라고 받아들여라