[英]Return non-optional with .Success enum in Swift
题:
当也要传入的枚举类型为.Success
如何以强制非可选类型的方式定义函数? 如果无法做到这一点,最好的建模方法是什么?
内容:
我正在围绕API进行基于完成处理程序的包装。 传递回处理程序的参数包括一个给出响应状态的enum
和一个User
实例。 enum
是这样的:
enum ResponseStatus : Int {
case Success = 200
case InvalidParameters = 422
// and a few more
}
方法签名是这样的:
static func createAccount(email: String, password: String, handler: (status: ResponseStatus, user: User?) -> ())
问题在于, .Success
可能与nil
一起返回给用户,这不应该发生。
我希望能够强制执行如果成功传递.Success
不能为nil
。 能做到吗? 如果没有,什么是最好的管理方式?
在此先感谢您的帮助。
@AlexsanderAkers和@neilkimmett都提供了不错的答案。 唯一使他们分开的是亚历克斯在尼尔面前的那一刻。 谢谢你们!
那这样的东西呢?
enum ResponseStatus<T> {
case Success(T)
case InvalidParameters
// other cases
}
或者,您可能具有Either
/ Result
类型,并且仅将枚举用于错误方案?
static func createAccount(email: String, password: String, handler: (Result<User, ResponseError>) -> Void) { ... }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.