2013-12-11 3 views
1

특정 규칙에 따라 Squeryl을 사용하여 엔티티 유형의 일반 삽입 및 업데이트를 수행하는 클래스를 작성하려고합니다.scalac은 org.squeryl.Table에서 올바른 삽입 메소드를 찾지 못합니다.

나는 그냥 Table[E]update를 호출 할 때 컴파일해야하지만이 같은 인수와 같은 Table[E], insert를 호출 할 때, 컴파일러는 내가 T 아닌 org.squeryl.Query[T]를 전달하고있어 뿌려줍니다.

그러나 org.squeryl.Table에는 insert이라는 메서드가 있으며이 메서드는 인수로 T을 사용합니다.

상속 된 메서드가 아닙니다. org.squeryl.Table에 바로 있습니다!

제약 조건이나 다른 암시 적 인수가 없습니다.

어떻게 scalac이 그렇게 간단한 것을 얻을 수 있습니까?

Eclipse가 혼란 스러울 수도 있다고 생각했지만, 정확히 sbt에 프로젝트를 빌드 한 것과 같은 결과가 나타납니다.

+0

기다려 ... 이것이 반환 값 유형을 유추하는 스칼라 때문일 수 있습니다. 확인하려면 내 코드를 볼 필요가 있지만 지금 당장은 내 코드가 없습니다. –

+0

당신은 적절하게 질문을 "보류"해야합니다. – VasyaNovikov

+0

@VasyaNovikov 나는 그 일을 혼자 할 수있는 힘이 없다. 5 명이 투표해야한다. 하지만 두 시간 만에 코드를 살펴볼 것이므로 필요 없습니다. –

답변

0

이것은 추정 된 반환 형식을 기반으로 호출 할 수있는 메서드 집합을 축소하는 scalac에 의해 발생한 것으로 보입니다. 메소드의 값을 반환하는 다음 라인을 작성해야했습니다 (이것은 if...else 안에있었습니다).

코드를 입력하자마자 typechecked IDE의 컨텍스트에서 정말 unintuitive 동작입니다. 다음 라인을 작성하는 대신, 나는 일시적인 문제였던 타입 오류를 수정하는 데 주력하고있었습니다.

관련 문제