我想探索使用scala的Datastax Cassandra CQL3驱动程序,但我想我可能已经陷入了第一道障碍。
在the Javadoc中创建Cluster对象的方法中,addContactPoints
有一个重载方法,它接受一个String序列或一个java.net.InetAddress序列作为参数。
有没有一种方法可以用惯用的Scala方式对其进行建模,这样我就可以尝试对输入参数的类型和arity进行模式匹配,以调用正确的方法。
带
import com.datastax.driver.core.Cluster
def cp = Cluster.builder().addContactPoint _
def cps = Cluster.builder().addContactPoints _
cp返回
cp: String => com.datastax.driver.core.Cluster.Builder
然而,cps给出了
error: ambiguous reference to overloaded definition,
both method addContactPoints in class Builder of type (x$1: <repeated...>[java.net.InetAddress])com.datastax.driver.core.Cluster.Builder
and method addContactPoints in class Builder of type (x$1: <repeated...>[String])com.datastax.driver.core.Cluster.Builder
match expected type ?
答案 0 :(得分:4)
如何明确指定函数的类型?
import com.datastax.driver.core.Cluster
def cp = Cluster.builder().addContactPoint _
def cps(addresses: [String]) : Cluster.Builder = Cluster.builder().addContactPoints(addresses)