斯威夫特3:如何根据不同的情况让一个常数?

时间:2017-03-11 14:18:17

标签: swift

    let action = { () -> Action in
        if fromView == self.defaultView {
            return Action.push
        } else if toView == self.defaultView {
            return Action.pop
        } else {
            return Action.swap
        }
    }()

我想根据不同的情况让一个常数。

这是正确的方法吗? (它的工作正常,我只是想找到一种更优雅的方式。)

3 个答案:

答案 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
}