gpt4 book ai didi

"+:"和 "::"之间的 Scala 区别

转载 作者:行者123 更新时间:2023-12-01 07:55:04 25 4
gpt4 key购买 nike

我正在阅读一本 Scala 书籍,他们在对序列和列表进行模式匹配时使用两种不同类型的 cons 运算符

+:

::

通常大多数函数式语言使用 :: 作为缺点。我不知道为什么 Scala 有 2 种不同类型的运算符来表示缺点。

我也用谷歌搜索了这个……但没有找到任何有意义的东西。

感谢下面的回答。我从中了解到 +: 是一个通用运算符,而 :: 是特定于列表的。但我的后续问题可能是为什么 Scala 会使用两个运算符。为什么不只使用一个 ::

最佳答案

final case class ::[B](override val head: B, private[scala] var tl: List[B]) extends List[B] {
override def tail : List[B] = tl
override def isEmpty: Boolean = false
}


override def +:[B >: A, That](elem: B)(implicit bf: CanBuildFrom[List[A], B, That]): That = bf match {
case _: List.GenericCanBuildFrom[_] => (elem :: this).asInstanceOf[That]
case _ => super.+:(elem)(bf)
}

这很清楚 - :: 接受 List 并生成 List,而 +: 是更通用的形式,可以构建其他集合 - 如 Vector ArrayBuffer

关于 "+:"和 "::"之间的 Scala 区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30010240/

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