Невозможно увидеть реальную разницу между ::
и +:
методом Scala List.Scala List method `::` vs `+:`
Я использовал REPL для тестирования и не вижу различий в результатах.
Любой может дать мне, как я могу использовать это правильно?
Невозможно увидеть реальную разницу между ::
и +:
методом Scala List.Scala List method `::` vs `+:`
Я использовал REPL для тестирования и не вижу различий в результатах.
Любой может дать мне, как я могу использовать это правильно?
Рассматривая код List, +:
использует ::
(cons) оператор для добавления.
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)
}
В общем, +:
определяется в SeqLike
и любого набора реализации SeqLike
можно использовать то же самое.
С другой стороны, ::
определен в List
и может использоваться только List
.
:: не определен для Seq, только для списка – harshtuna
Спасибо. Modified. – ttt
См. Также http://stackoverflow.com/questions/30959597/why-can-i-use-operator-with-seq-in-pattern-matching-but-not-ewhere – AmigoNico