在 Scala 中,如何使用 `Nothing` 作为 Fake 方法的返回值?

In Scala, how to use `Nothing` as returned value to Fake a method?

我想创建一个名为 save 的方法,但尚未准备好实施它。但是,我不希望它在评估期间抛出异常。所以我试着把它 return 变成 Nothing 作为结果。

def save[A <: AuthInfo](profile: CommonSocialProfile): Future[UserProfile] = {
  // To be done
  new Nothing()
}

但这行不通,编译器说:

class Nothing is abstract; cannot be instantiated

我也试过 ??? 作为占位符,但这会抛出一个 NotImplementedError,这也不符合我的需要..

def save[A <: AuthInfo](profile: CommonSocialProfile): Future[UserProfile] = ???

有人有更简单的方法来伪造 Scala 中的方法吗?

因为您需要 return 类型 Future[UserProfile] 的东西,您只需要制作一个假的 UserProfile 和 return 它。

所以如果 UserProfile 是这样定义的:

class UserProfile(id: Int, name: String)

然后做类似的事情:

def save[A <: AuthInfo](profile: CommonSocialProfile): Future[UserProfile] = {
  // To be done
  Future(new UserProfile(-1, ""))
}

或者,也许您需要一个特殊的 UserProfile 单例来实现此目的:

object FakeUserProfile extends UserProfile(-1, "")

def save[A <: AuthInfo](profile: CommonSocialProfile): Future[UserProfile] = {
  // To be done
  Future(FakeUserProfile)
}