swift - 根据参数调用不同的函数

标签 swift function

我正在重写一些代码,并尝试减少函数的嵌套。该函数将枚举作为参数并对其执行 switch 操作。这没关系,但它增加了两级缩进。

我想做的是这样的:

func getTrips<T : TripStatus.Confirmed> (status:T) {
    //Do one thing
}

func getTrips<T : TripStatus.Unconfirmed> (status:T) {
    //Do another thing
}

枚举的定义如下:

enum TripStatus:String {
    case Confirmed = "Confirmed", Unconfirmed = "Unconfirmed", Tracking = "Tracking", Empty = "Empty"
}

目标是我可以调用 getTrips(status),Swift 根据枚举值选择正确的函数。

最佳答案

您可以向您的 TripStatus 添加一个计算属性,返回您要根据状态执行的函数,然后调用它。例如(在示例中我返回一个可选函数):

enum TripStatus: String {
    case Confirmed = "Confirmed", Unconfirmed = "Unconfirmed", Tracking = "Tracking", Empty = "Empty"

    var getTrips : (() -> ())? {
        switch self {
            case .Confirmed:    return self.getConfirmedTrips
            case .Unconfirmed:  return self.getUnconfirmedTrips
            default:            return nil
        }
    }

    func getConfirmedTrips() { print("getConfirmedTrips") }
    func getUnconfirmedTrips() { print("getConfirmedTrips") }
}

let status = TripStatus.Confirmed

status.getTrips?() // prints getConfirmedTrips

关于swift - 根据参数调用不同的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37399925/

相关文章:

ios - Collection View 顶部的奇怪间隙

Java:计算给定多项式的根时出现问题

ios - 我如何确定 UIImagePickerView 的呈现位置?

swift - 从不正确的位置查看动画

swift - 在 NSTokenField 中设置 token

ios - 为什么我的 SwiftUI 动画在旋转时会恢复到上一帧?

无法使用数组创建 C 函数

sql - 重写函数以不返回记录类型

使用 PCL 时私有(private)函数的 C++ 继承

python - 从 SymPy 符号定义函数