저는 스칼라 코드로 놀아 왔고, 이해하지 못하는 컴파일러 에러에 대해서 제기했습니다. 이 코드는 Ints 쌍의 벡터를 생성 한 다음이를 필터링하려고 시도합니다. 정확하게 필요한 기능 유형을 만족시키기 위해 내가 기능 f
를 정의하려면 어떻게스칼라 : 함수를 올바른 타입으로 정의하기
error: type mismatch;
found : (Int, Int) => Boolean
required: ((Int, Int)) => Boolean
:
val L = for (x <- (1 to 5)) yield (x, x * x)
val f = (x: Int, y: Int) => x > 3
println(L.filter(f))
컴파일러는 컴파일러 오류 메시지의 존재와 filter
방법에 대한 인수로 f
을 사용하려고 뿌려 ? 나는 (x: Int, y: Int)
주위에 여분의 괄호를 추가하려고하지만이 준 :
error: not a legal formal parameter
val f = ((x: Int, y: Int)) => x > 3
^
이 문제는 인수 목록과 튜플 사이의 구별을 제거하는 인수입니다. 즉, f (x, y)의'(x, y)'는 맨 ('x, y)'자체와는 다른 종류입니다. 불행히도이 구분을 제거하는 것은 기술적으로 중요하지 않습니다. –