scala - 在 Scala 中实例化赋值运算符两侧的对象;它是如何工作的

标签 scala syntax

我想了解以下行背后的机制:

 val List(x) = Seq(1 to 10)

这种机制的名称是什么?这与类型转换相同,还是有其他事情发生? (在 Scala 2.11.12 中测试。)

最佳答案

该机制称为模式匹配。

这是官方文档:https://docs.scala-lang.org/tour/pattern-matching.html

这也适用于理解:

for{
 People(name, firstName) <- peoples
} yield s"$firstName $name"

以你的例子:
val List(x) = Seq(1 to 10)
x是该列表的内容 - 在您的情况下 Range 1 to 10 (您有一个包含一个元素的列表)。

如果您确实有一个包含多个元素的列表,则会引发异常
val List(x) = (1 to 10).toList // -> ERROR: undefined

所以正确的模式匹配是:
val x::xs = (1 to 10).toList

现在 x是第一个元素(头)和 xs其余(尾部)。

关于scala - 在 Scala 中实例化赋值运算符两侧的对象;它是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55722126/

相关文章:

java - 在 Windows 上安装 Spark 不起作用

scala - Akka Streams 是否利用 Akka Actors?

c# - 去 - 斯卡拉 - 去!主要区别是什么?

php - 在对象内部调用对象方法的语法

javascript - 为什么我不能访问带有单个点的整数的属性?

javascript - 谷歌图表设置网格线颜色

mysql - 非常简单的 Slick 查询,获取单个值

regex - Scala中的分割线是什么意思?

wpf - x :Key ="{x:Type TextBox}" do? 是什么意思

sql - VBA 运行时错误 3134