如何定义一个带有多个返回值的Scala函数

时间:2017-11-16 15:35:54

标签: scala cassandra mysql-workbench

我想编写一个返回会话(Cassandra数据库)和连接(MySQL)的泛型函数吗?

这是我的代码:

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
      }
}

我应该如何定义我的函数,以便get db应该返回到它连接的任何一个。

3 个答案:

答案 0 :(得分:2)

这是不可能的,因为这两个Sessions对象虽然具有相同的名称,但它们不同。你可以返回一个Either但是你仍然需要不同的代码来处理右VS左。

答案 1 :(得分:1)

在尝试从语法/返回类型的角度解决此问题之前,我会考虑另外两点:

  1. 系统架构。您真的需要两个由您的应用程序动态发现的存储系统吗?只是想知道,这种情况的实际用例是什么。

  2. 应用程序架构。如果您确实需要支持两种存储类型,请尝试隐藏通用接口(特征)背后的特定细节。然后你的方法返回类型将是接口类型,它将返回特定的实现。

答案 2 :(得分:0)

我认为你可以在一个元组中返回它们。无论哪个为null,都应返回Option

一些usefeul链接可能会有所帮助: