【问题标题】:how to define a Scala function that takes multiple return values如何定义一个接受多个返回值的 Scala 函数
【发布时间】:2018-04-30 05:22:58
【问题描述】:

我想写一个通用函数返回会话(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 应该返回到它所连接的那个。

【问题讨论】:

  • 这里不需要returnreturn 在 Scala 中几乎没有使用过。自动返回最后一个表达式。

标签: scala cassandra mysql-workbench


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-21
        • 2018-07-16
        • 1970-01-01
        • 1970-01-01
        • 2023-01-03
        • 2011-05-14
        相关资源
        最近更新 更多