gpt4 book ai didi

scala - 在 Scala 中声明多个变量

转载 作者:行者123 更新时间:2023-12-02 16:17:30 26 4
gpt4 key购买 nike

我想使用 val 来声明多个变量,如下所示:

val a = 1, b = 2, c = 3

但无论出于何种原因,这是一个语法错误,所以我最终使用了:

val a = 1
val b = 2
val c = 3

val a = 1; val b = 2; val c = 3;

我个人认为这两个选项都过于冗长并且有点丑陋。

有更好的选择吗?

此外,我知道 Scala 是一种经过深思熟虑的语言,那么为什么不允许使用 val a = 1, b = 2, c = 3 语法?

最佳答案

简单的答案是将它们声明为元组:

val (a, b, c) = (1, 2, 3)

这里可能有趣的是,这是基于模式匹配的。实际发生的情况是,您正在构建一个元组,然后通过模式匹配为 abc 赋值。

让我们考虑一些其他模式匹配示例来进一步探讨这一点:

val DatePattern = """(\d{4})-(\d\d)-(\d\d)""".r
val DatePattern(year, month, day) = "2009-12-30"
val List(rnd1, rnd2, rnd3) = List.fill(3)(scala.util.Random.nextInt(100))
val head :: tail = List.range(1, 10)

object ToInt {
def unapply(s: String) = try {
Some(s.toInt)
} catch {
case _ => None
}
}

val DatePattern(ToInt(year), ToInt(month), ToInt(day)) = "2010-01-01"

顺便说一句,rnd 示例可以写得更简单,并且无需说明模式匹配,如下所示。

val rnd1, rnd2, rnd3 = scala.util.Random.nextInt(100)

关于scala - 在 Scala 中声明多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1981748/

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