相关疑难解决方法(0)

Scala中Seq和List之间的区别

我在很多例子中看到有时使用Seq,而其他时候是List ......

除了前一个是Scala类型和List来自Java之外,有什么区别吗?

collections scala list seq

279
推荐指数
4
解决办法
12万
查看次数

scala,返回类型指南 - 何时更喜欢seq,iterable,traversable

您何时选择将给定函数的返回类型键入Seqvs Iterablevs Traversable(或者甚至更深入Seq的层次结构中)?

你是如何做出这个决定的?我们有很多代码Seq默认返回s(通常从数据库查询和连续转换的结果开始).我倾向于在Traversable默认情况下以及Seq在特定期望给定订单时创建返回类型.但我没有充分的理由这样做.

我完全熟悉每个特性的定义,所以请不要回答定义术语.

scala

46
推荐指数
3
解决办法
8105
查看次数

我可以用TraversableLike.map的类似物来"pimp my library"吗?它具有很好的变体类型?

假设我要像功能添加map到斯卡拉List,沿着线的东西list mapmap f,其功能适用f于每个元素list的两倍.(一个更严重的例子可能是实现并行或分布式地图,但我不想被那个方向的细节分心.)

我的第一种方法是

object MapMap {
    implicit def createFancyList[A](list: List[A]) = new Object {
        def mapmap(f: A => A): List[A] = { list map { a: A => f(f(a)) } }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在这很好用

scala> import MapMap._
import MapMap._

scala> List(1,2,3) mapmap { _ + 1 }
res1: List[Int] = List(3, 4, 5)
Run Code Online (Sandbox Code Playgroud)

当然除了这只是为ListS,而且也没有理由我们不应该想这对任何工作Traverseable,具有map功能,例如SetS或Stream秒.所以第二次尝试看起来像

object MapMap2 {
    implicit def …
Run Code Online (Sandbox Code Playgroud)

scala variance implicit-conversion scala-collections

7
推荐指数
2
解决办法
705
查看次数