首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定义接受多个返回值的Scala函数

问如何定义接受多个返回值的Scala函数
EN

Stack Overflow用户
提问于 2017-11-16 23:35:54
回答 3查看 663关注 0票数 0

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

下面是我的代码:

代码语言:javascript
复制
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应该返回到它所连接的任何地方。

EN

回答 3

Stack Overflow用户

发布于 2017-11-17 00:10:19

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

票数 2
EN

Stack Overflow用户

发布于 2017-11-17 17:09:47

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

  1. 系统架构。您真的需要两个由应用程序动态发现的存储系统吗?我只是想知道,这种scenario.
  2. Application架构的实际用例是什么。如果您确实需要支持两种存储类型,请尝试将特定细节隐藏在公共接口(特征)后面。那么您的方法返回类型将是接口类型,并且它将返回特定的implementation.
票数 2
EN

Stack Overflow用户

发布于 2017-11-17 16:24:27

我认为您可以在一个元组中同时返回这两个参数。无论哪个为null,都应该以Option的形式返回。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47333602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档