let action = { () -> Action in
if fromView == self.defaultView {
return Action.push
} else if toView == self.defaultView {
return Action.pop
} else {
return Action.swap
}
}()
我想根据不同的情况让一个常数。
这是正确的方法吗? (它的工作正常,我只是想找到一种更优雅的方式。)
答案 0 :(得分:2)
如果您在方法中执行此操作(并且您的action
变量不是属性),则不需要关闭,您可以写:
let action: Action
if fromView == self.defaultView {
action = .push
} else if toView == self.defaultView {
action = .pop
} else {
action = .swap
}
如果if / else处理所有情况,编译器不会抱怨action
变量未初始化使用。
答案 1 :(得分:0)
请在下面找到一段代码。如果你想使用它作为常量。
let action: Action {
get {
switch self.defaultView {
case fromView:
return Action.push
case toView:
return Action.pop
default:
return Action.swap
}
}
}
答案 2 :(得分:0)
这是使用条件填充常量的正确语法
let action = { () -> Action in
switch self.defaultView {
case self.fromView: return .push
case self.toView: return .pop
default: return .swap
}
}()
完整示例
import UIKit
class ViewController: UIViewController {
let fromView = UIView()
let defaultView = UIView()
let toView = UIView()
func foo() {
let action = { () -> Action in
switch self.defaultView {
case self.fromView: return .push
case self.toView: return .pop
default: return .swap
}
}()
}
}
enum Action {
case push, pop, swap
}