- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么 Scala 同时具有 unapply
和 unapplySeq
?两者有什么区别?我什么时候应该选择其中一种而不是另一种?
最佳答案
无需深入细节并稍微简化一下:
对于常规参数apply
构造和unapply
解构:
object S {
def apply(a: A):S = ... // makes a S from an A
def unapply(s: S): Option[A] = ... // retrieve the A from the S
}
val s = S(a)
s match { case S(a) => a }
对于重复参数,apply
构造和 unapplySeq
解构:
object M {
def apply(a: A*): M = ......... // makes a M from an As.
def unapplySeq(m: M): Option[Seq[A]] = ... // retrieve the As from the M
}
val m = M(a1, a2, a3)
m match { case M(a1, a2, a3) => ... }
m match { case M(a, as @ _*) => ... }
请注意,在第二种情况下,重复的参数将被视为 Seq
以及 A*
和 _*
之间的相似性。
因此,如果您想对自然包含各种单个值的内容进行解构,请使用unapply
。如果您想对包含 Seq
的内容进行解构,请使用 unapplySeq
。
关于scala - unapply 和 unapplySeq 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8282277/
我有以下代码旨在在同一个提取器中定义 unapply 和 unapplySeq test("pattern matching define unapply and unapplySeq") {
为什么 Scala 同时具有 unapply 和 unapplySeq?两者有什么区别?我什么时候应该选择其中一种而不是另一种? 最佳答案 无需深入细节并稍微简化一下: 对于常规参数apply构造和u
我正在尝试使用 Scala Play 2、Slick 3 和 PostgreSQL 构建网络应用程序。我的目的是从 Controller 返回 JSON。 这些是依赖关系- libraryDepend
我需要在我的服务器上接收一个大的 JSON(超过 22 个字段)。 我有一个包含很多字段的案例类: case class Filters(objectType: Option[String] = No
我是一名优秀的程序员,十分优秀!