2017-11-16 34 views
0

セッション(Cassandraデータベース)と接続(MySQL)の両方を返す汎用関数を記述したいと思いますか?私はDBは、それが接続されている方に返す必要があり得る、そのような私の関数を定義する必要がありますどのように複数の戻り値をとるScala関数を定義する方法

def getdb: Session = { 
    var cluster = Cluster.builder().addContactPoint("127.0.0.1").build() 
    var session: Session = cluster.connect("keyspace") 
    if (session.getState != null) { 
     currentDB = "cassandra" 
     return session 
     } 
     else{ 
     //code for mysql connection 
     return Connection 
     } 
} 

は、ここに私のコードです。

+0

ここでは「返却」は必要ありません。 Scalaでは 'return'はほとんど使われていません。最後の式が自動的に返されます。 –

答えて

2

これらの2つのSessionsオブジェクトは同じ名前でも異なるため、これは不可能です。どちらか一方を返すことができますが、残った右VSを処理するために異なるコードが必要になります。

1

、私は2つの他の点について考えます:

  1. システムアーキテクチャ。アプリケーションによって動的に検出される2つのストレージシステムが本当に必要ですか?そのようなシナリオの実際の使用例はなんですか?

  2. アプリケーションアーキテクチャ。 2つのストレージタイプを本当にサポートする必要がある場合は、共通インターフェース(特性)の背後にある特定の詳細を非表示にしてください。次に、あなたのメソッドの戻り値の型はインタフェース型になり、特定の実装を返します。

関連する問題