gpt4 book ai didi

scala - 如何将元组声明为函数的返回类型以及如何在 Scala 的调用方代码中访问元组?

转载 作者:行者123 更新时间:2023-12-04 09:00:02 24 4
gpt4 key购买 nike

假设我有一个应该返回类型元组的 Scala 函数(String, Int, Int) mapped to keys (words, row, col) :

def getResult(param: Int)    {

// a lot of logic goes here to generate tuple values

// now return the tuple

}

在调用方代码中:
var words, row, col
if(someValue) {

getResults(someValue) // assigns the tuple values to keys words, row and col
// reference words, row and col variables here

} else
getResults(someOtherValue) // assigns the tuple values to keys words, row and col
// reference words, row and col variables here
}
// in this scope here words, row and col are defined and must have values that got assigned in above code
// do something more with words, row and col variables.

代码不完整。那么我将如何在函数中声明和返回元组,以及如何在上述场景中使用?

即使 map 看起来更合适,元组在上述情况下是否推荐使用?

尽管我得到了所有答案,但没有答案解决如何声明元组并稍后在代码中填充元组的问题(在声明时不为元组分配值,如下所示:
var (words, row, col) =  if(someValue) {
getResults(someValue)
} else {
getResults(someOtherValue)
}

这是代码中仍未得到答复的部分:
var words, row, col  // how do I delcare tuple here?
if(someValue) {

getResults(someValue) // assigns the tuple values to keys words, row and col
// how I do that here ?
// reference words, row and col variables here

} else
getResults(someOtherValue) // assigns the tuple values to keys words, row and col
// reference words, row and col variables here
}

最佳答案

可以在 syntactically simple fashion 中执行多个分配(依赖于元组类型的 unapply 方法),如下:

val (foo, bar) = ("Hello", "world")

// The above is entirely equivalent to:
// val foo = "Hello"
// val bar = "world"
//
// or:
//
// val tmp = ("Hello", "world")
// val foo = tmp._1
// val bar = tmp._2

因此,您可以简单地将后一个示例更改为:
var (words, row, col) =  if(someValue) {
getResults(someValue)
} else {
getResults(someOtherValue)
}
if语句将返回 (String, Int, Int)并将相关组件分配给 words , rowcol为了。

如果您询问如何使用返回类型注释方法声明,那也很简单:
def getResult(param: Int): (String, Int, Int) = {
...
}

至于作为 map 是否更好 - 这完全取决于您的方法的语义。您是一次返回多个值(元组)还是返回键和值之间的关联(映射)?感觉最自然和最方便的就是您应该使用的(至少在没有其他问题的情况下)。

关于scala - 如何将元组声明为函数的返回类型以及如何在 Scala 的调用方代码中访问元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6585528/

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