我试图简化
var isReachable = {
switch status {
case .reachable: return true
default: return false
}
}()
类似
var isReachable = (case status == .reachable)
以下是完整示例:
enum NetworkReachabilityStatus {
case unknown
case notReachable
case reachable(Alamofire.NetworkReachabilityManager.ConnectionType)
}
NetworkReachabilityManager().listener = { status in
var isReachable = {
switch status {
case .reachable: return true
default: return false
}
}()
}
当您处理具有关联值的枚举时,这只是一个问题。有什么建议吗?
答案 0 :(得分:2)
NetworkReachabilityStatus上的扩展程序可以使其正常工作。
extension NetworkReachabilityStatus {
var isReachable: Bool {
switch self {
case .reachable(_): return true
default: return false
}
}
}
NetworkReachabilityManager().listener = { status in
var isReachable = status.isReachable
}
答案 1 :(得分:0)
(因为你的完整示例没有做任何事情)如果你对这个问题的动机是你只想在用“可达”调用监听器时执行某些操作(类似于用{{1}调用的完成}),你可以写:
success: Bool
如果你不满意可读性 - Yoda条件任何人? - 你可以将它与kkoltzau的答案结合起来,这样你就可以写下:
NetworkReachabilityManager().listener = { status in
if case .reachable(_) = status {
// perform some operation
}
}