繁体   English   中英

在Swift中使用.Success枚举返回非可选

[英]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) { ... }

似乎是https://github.com/antitypical/Result的完美用例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM