[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]
如何让Scala选择我想要调用的方法(更具体的方法)?
哦,虽然在这种情况下g.addVertext(...,Nil)
在语义上是等价的,但我仍然想知道如何解决上述问题。
答案 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")
)
选项包括:
addVertex(x$1: Any, x$2: Any*)
签名更改为addVertex(x$1: Any, x$2: Any, x$3: Any*)
,以便它仅处理包含2个或更多参数的调用。 (我假设您的addVertex(x$1: Any)
和addVertex(x$1: Any, x$2: Any*)
对一个参数的行为相同)