“:”和“::”之间的Scala差异
发布时间:2020-12-16 10:06:41 所属栏目:安全 来源:网络整理
导读:我正在阅读 scala书,他们在序列和列表上进行模式匹配时使用两种不同类型的cons运算符 +::: 通常大多数函数式语言使用:: as cons.我不知道为什么scala有2种不同类型的运算符. 我也搜索了这个…但没有找到任何有意义的东西. 谢谢你的回答.我从中理解:是一个通
我正在阅读
scala书,他们在序列和列表上进行模式匹配时使用两种不同类型的cons运算符
+: :: 通常大多数函数式语言使用:: as 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) } 这使得它变得清晰 – :: take List并生成List,而:是更通用的形式,可以构建其他集合 – 如Vector或ArrayBuffer. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |