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 に答える