익명 함수에 파라미터 타입이 없어요
익명 함수에 파라미터 타입이 없어요 (E081: Anonymous Function Missing Parameter Type)
익명 함수(람다)의 파라미터 타입을 컴파일러가 추론할 수 없는데 명시적인 타입이 없으면 이 에러가 나요. 타입이 없는 파라미터에는 직접 타입 표기를 붙여줘야 해요.
본문
익명 함수(람다, lambda)의 파라미터 타입을 컴파일러가 추론하지 못하고 명시적인 타입도 제공되지 않으면 이 에러가 발생해요.
컴파일러는 함수 본문을 제대로 타입 검사하려면 함수 파라미터의 타입을 알아야 해요. 타입을 추론할 문맥이 충분하지 않다면 명시적으로 타입 표기(type annotation)를 붙여줘야 하죠.
예시 (Example)
val f = (x) => x + 1
x의 타입을 알 수 있는 문맥이 없네요.
에러 (Error)
-- [E081] Type Error: example.scala:1:9 ----------------------------------------
1 |val f = (x) => x + 1
| ^
| Missing parameter type
|
| I could not infer the type of the parameter x
해결 방법 (Solution)
파라미터에 명시적인 타입 표기를 붙여주세요.
// Add an explicit type annotation to the parameter
val f = (x: Int) => x + 1
또는 변수 선언을 통해 타입 문맥을 제공해도 돼요.
// Or provide type context through the variable declaration
val f: Int => Int = x => x + 1
타입 정보를 주는 문맥에서 함수를 사용하는 방법도 있어요.
// Or use the function in a context that provides type information
val result = List(1, 2, 3).map(x => x + 1)