我可以按如下方式分配一个元组:
var (min, max) = (1, 2)
Run Code Online (Sandbox Code Playgroud)
但我不能再重新分配如下
(min, max) = (1, 3) //compiler error: ';' expected but '=' found
Run Code Online (Sandbox Code Playgroud)
相反,我似乎必须这样做:
min = 1
max = 3
Run Code Online (Sandbox Code Playgroud)
为什么后者不起作用而前者不起作用?
可能重复:
元组参数声明和赋值奇怪
在python我能做到
>>> (a,b) = (1,2)
>>> (b,a) = (a,b)
>>> (a,b)
(2, 1)
Run Code Online (Sandbox Code Playgroud)
但在斯卡拉:
Welcome to Scala version 2.8.1.final (OpenJDK Server VM, Java 1.6.0_20).
Type in expressions to have them evaluated.
Type :help for more information.
scala> var (a,b) = (1,2)
a: Int = 1
b: Int = 2
scala> (a,b)=(b,a)
<console>:1: error: ';' expected but '=' found.
(a,b)=(b,a)
^
Run Code Online (Sandbox Code Playgroud)
因此,虽然我可以将vars初始化为元组,但我不能将它们指定为元组.有什么方法可以解决这个问题,除了使用tmp var?
我是Spark&Scala的新开发人员,我想做一件简单的事情(我认为..):
因此,我的代码如下所示:
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)
我尝试了许多配置,但是每次都会遇到许多不同的错误,因此,我感到困惑。