gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:16:40 28 4
gpt4 key购买 nike

我有以下方法:

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时不应该有任何混淆。我尝试用谷歌搜索,但找不到有关“Unit.type”是什么的更多信息。

如果我像这样简化方法,那么它就可以正常工作:

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

这是怎么回事?

最佳答案

Unit 的唯一实例是()。用作值的Unit是Unit的伴生对象(主要管理装箱和拆箱)

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

关于scala - Unit.type 和 Unit 之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47716512/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com