2014-02-10 2 views
0
[error] both method addVertex in class OrientBaseGraph of type (x$1: Any, x$2: <repeated...>[Object])com.tinkerpop.blueprints.impls.orient.OrientVertex 
[error] and method addVertex in class OrientBaseGraph of type (x$1: Any)com.tinkerpop.blueprints.impls.orient.OrientVertex 
[error] match argument types (String) 
[error]   val npNode = g.addVertex(f"class:$NPPhrase") 
[error] 

어떻게 스칼라 내가 (보다 구체적인 하나)를 호출하려고 방법을 선택하기 위해 어떻게해야합니까? 이러한 맥락에서 g.addVertext(...,Nil)는 의미와 동일하면서스칼라 오버로드 메서드 확인 문제. 올바른 방법을 선택하도록 컴파일러를 얻는 방법?

오와, 난 여전히 위의 문제를 해결하는 방법을 알고 싶어요.

+0

코드를 표시하십시오! –

+0

코드로 무엇을 할 것입니까? 이것은 문자열을 입력으로 사용하는 방법 일뿐입니다. 확인 어쩌면 당신은 NPPhrase'이 무엇인지'볼 필요가 : '/하지만 난 돈 :..'데프 NPPhrase = "NPChunkPhrase"' –

+0

건배, 하나는 –

답변

3

컴파일러는 당신에게 옳은 일을 말한다.

addVertex(f"class:$NPPhrase")addVertex(Any)addVertex(x$1: Any, x$2: Any*)과 일치합니다. x$2 매개 변수가 비어있을 수 있으며 addVertex(x$1: Any, x$2: Any*) (같은이 addVertex("whatever"))를 호출 할 때

옵션은 생략 할 수 있기 때문에 이러한 문제가 발생합니다 :

  1. 는 방법 중 하나의 이름을 바꿉니다. 이 2 개 이상의 매개 변수와 함께 호출 만 처리하도록
  2. addVertex(x$1: Any, x$2: Any, x$3: Any*)addVertex(x$1: Any, x$2: Any*) 서명을 변경
  3. . (귀하의 addVertex(x$1: Any)addVertex(x$1: Any, x$2: Any*)은 하나의 매개 변수에 대해 동일하게 동작한다고 가정합니다)
+0

네 닫 투표 재치있는 대답 ("자바 동음 클래스 생성)가 t는 그 코드에 액세스 할 수 있습니다. 그것은 OrientDB의 부분입니다. 분명히 스칼라는 레거시 코드를 다루는이에 대한 몇 가지 기계를 가지고? –

+1

글쎄, 그건 멋진 관찰 참입니다 .. 당신이 OrientDB을위한 자바 라이브러리의 어떤 종류를 사용하는 가정합니다. 문제는 스칼라가이 문제를 컴파일 오류로 처리한다는 것입니다 (호출 할 메서드를 선택할 수는 없지만). Java는 varargs없이 메서드를 실행하고 불평하지 않습니다. – serejja

+0

이것은 알려진 문제인 것처럼 보입니다. 이 내용을 읽으십시오 : http://stackoverflow.com/questions/3313929/how-do-i-disambiguate-in-scala-between-methods-with-vararg-and-without – serejja