在 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)
}
我想创建一个名为 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)
}