运维开发网

scala – Unit.type和Unit之间有什么区别

运维开发网 https://www.qedev.com 2020-07-28 11:42 出处:网络 作者:运维开发网整理
我有以下方法: override def insertAll(notifications: Seq[PushNotificationEncoded]) (implicit ec: ExecutionContext): Future[Unit] = { val f = Future.sequence(notifications.map(insert))
我有以下方法:

override def insertAll(notifications: Seq[PushNotificationEncoded])
                      (implicit ec: ExecutionContext): Future[Unit] = {
  val f = Future.sequence(notifications.map(insert)).map(_ => Unit)
  f.onFailure { case ex => sys.error(s"Got exception whilst saving PushNotification: $ex") }
  f
}

它给出了以下编译器错误:

type mismatch;
  found   : scala.concurrent.Future[Unit.type]
  required: scala.concurrent.Future[Unit]
     f
     ^

我认为Unit是一个带有单个元素的类型,因此在Unit中不应该有任何混淆.我尝试使用Google搜索,但我找不到有关“Unit.type”的更多信息.

如果我简化这样的方法,那么它工作正常:

override def insertAll(notifications: Seq[PushNotificationEncoded])
                      (implicit ec: ExecutionContext): Future[Unit] =
  Future.sequence(notifications.map(insert)).map(_ => Unit)

这里发生了什么?

单位的唯一实例是().用作值的单位是Unit的伴侣对象(主要管理装箱和拆箱)

val f = Future.sequence(notifications.map(insert)).map(_ => ())
0

精彩评论

暂无评论...
验证码 换一张
取 消