我一直在研究一些用于构建数据访问层的Play Slick示例,并发现CatDAO example中的以下行有点引人入胜:
def insert(cat: Cat): Future[Unit] = db.run(Cats += cat).map { _ => () }
我想知道做.map { _ => () }
UPDATE :在Scala解释器中运行以下内容提供了一些线索,但仍然不完全清楚为什么在上面的插入方法中需要它。
scala> val test = Seq(1, 2, 3)
test: Seq[Int] = List(1, 2, 3)
scala> test map { _ => () }
res0: Seq[Unit] = List((), (), ())
答案 0 :(得分:3)
如果没有该映射,db.run
方法将返回插入数据库的大量记录(返回类型将为Future[Int]
)。然而,代码的作者并不需要这个价值,他希望他的API能够返回Future[Unit]
。这就是他使用map
的原因,在这种情况下将Int
映射到Unit
(()
是一个代表Unit
的值类型)。