在 Swift 中将 switch 转换为 if else
Convert switch to if else in Swift
我想将 SwiftyJSON 的所有 switch 语句转换为 if-else 条件,因为 switch 语句会导致大量内存泄漏。
我几乎转换了所有的 switch 语句,但我被这个卡住了:
fileprivate subscript(sub sub: JSONSubscriptType) -> JSON {
...
switch sub.jsonKey {
case .index(let index): return self[index: index]
case .key(let key): return self[key: key]
}
...
}
public enum JSONKey {
case index(Int)
case key(String)
}
有人可以帮我吗?
switch sub.jsonKey {
case .index(let index): return self[index: index]
case .key(let key): return self[key: key]
}
将会
if case .index(let index) = sub.jsonKey {
return self[index: index]
} else if case .key(let key) = sub.jsonKey {
return self[key: key]
}
或抽象:
switch value {
case .a(let x): doFoo(x)
case .b(let y): doBar(y)
}
变成
if case .a(let x) = value {
doFoo(x)
} else if case .b(let y) = value {
doBar(y)
}
我想将 SwiftyJSON 的所有 switch 语句转换为 if-else 条件,因为 switch 语句会导致大量内存泄漏。
我几乎转换了所有的 switch 语句,但我被这个卡住了:
fileprivate subscript(sub sub: JSONSubscriptType) -> JSON {
...
switch sub.jsonKey {
case .index(let index): return self[index: index]
case .key(let key): return self[key: key]
}
...
}
public enum JSONKey {
case index(Int)
case key(String)
}
有人可以帮我吗?
switch sub.jsonKey {
case .index(let index): return self[index: index]
case .key(let key): return self[key: key]
}
将会
if case .index(let index) = sub.jsonKey {
return self[index: index]
} else if case .key(let key) = sub.jsonKey {
return self[key: key]
}
或抽象:
switch value {
case .a(let x): doFoo(x)
case .b(let y): doBar(y)
}
变成
if case .a(let x) = value {
doFoo(x)
} else if case .b(let y) = value {
doBar(y)
}