4

我想探索使用来自 scala 的 Datastax Cassandra CQL3 驱动程序,但我想我可能已经遇到了第一个障碍。

在Javadoc中用于创建 Cluster 对象的方法中有一个重载方法,addContactPoints该方法将 String 序列或 java.net.InetAddress 序列作为参数。有没有办法以惯用的 Scala 方式对此进行建模,以便我可以尝试对输入参数的类型和数量进行模式匹配以调用正确的方法。

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 ?
4

1 回答 1

4

那么显式指定函数的类型呢?

import com.datastax.driver.core.Cluster

def cp = Cluster.builder().addContactPoint _
def cps(addresses: [String]) : Cluster.Builder = Cluster.builder().addContactPoints(addresses)
于 2013-06-26T13:31:38.340 回答