在Scala中返回多个值的函数

sal*_*a44 2 scala apache-spark

我是Spark&Scala的新开发人员,我想做一件简单的事情(我认为..):

  • 我有3个int值
  • 我想定义一个返回SQL请求结果的函数(作为包含3列的DF)
  • 我想将这3列中每列的内容存储在3个初始变量中。

因此,我的代码如下所示:

var a
var b 
var c

def myfunction() : (Int, Int, Int) = {
  val tmp = spark.sql(""" select col1, col2, col3 from table
  LIMIT 1
  """)

  return (tmp.collect(0)(0), tmp.collect(0)(1), tmp.collect(0)(2))

}
Run Code Online (Sandbox Code Playgroud)

因此,如果要像这样调用我的函数的想法:

a, b, c = myfunction()
Run Code Online (Sandbox Code Playgroud)

我尝试了许多配置,但是每次都会遇到许多不同的错误,因此,我感到困惑。

Krz*_*sik 6

您可以只使用解构绑定。由于您的方法返回元组,因此您可以使用模式匹配将其解压缩:

val (a, b, c) = myfunction()
Run Code Online (Sandbox Code Playgroud)

abc将包含元组的连续元素。