我想了解以下行背后的机制:
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/