gpt4 book ai didi

Scala 从函数分配多个返回值

转载 作者:行者123 更新时间:2023-12-04 18:07:24 26 4
gpt4 key购买 nike

给定这个 Scala 函数

def mv: (Int,Int,Int) = {
(1,2,3)
}

以下作品

val (i,j,k) = mv

但这不

var i = 0
var j = 0
var k = 0
(i,j,k) = mv
<console>:1: error: ';' expected but '=' found.
(i,j,k) = mv
^

这意味着对多个变量的赋值只有在它们被初始化时才有效?或者也许我写错了?试图找到一种方法从函数返回多个值并将这些值分配给类中的实例变量,这意味着在调用函数时无法初始化变量,因为它们是在所有方法之外声明的。

class C {
var i = 0
var j = 0
var k = 0
def mv: (Int,Int,Int) = {
(1,2,3)
}
def changeState: Unit = {
(i,j,k) = mv
}
}

以上是行不通的。我可以创建一个案例类来保存返回值,但我想做一些这样的事情,因为它看起来更清楚。

最佳答案

我找到了一种让它工作的方法,但它似乎是错误的想法:

class C {
var i = 0
var j = 0
var k = 0
def mv: (Int,Int,Int) = {
(1,2,3)
}
def changeState: Unit = {
val (x,y,z) = mv
i = x
j = y
k = z
}
}

val c = new C
c.i == 0 //true
c.changeState
c.i == 1 //true so this works

可以用但是很丑

关于Scala 从函数分配多个返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23584819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com