簡體   English   中英

在函數中接受多種類型的枚舉

[英]Accepting enums of multiple types in functions

enum CompassPoint: String, Printable {
    case North = "North"
    case South = "South"
    case East = "East"
    case West = "West"

    var description: String {
        get {
            return self.rawValue
        }
    }
}

enum Cars: String, Printable {
    case Audi = "Audi"
    case Lexus = "Lexus"
    case Volkswagen = "Volkwagen"
    case Jaguar = "Jaguar"

    var description: String {
        get {
            return self.rawValue
        }
    }
}

func someFunction(direction: CompassPoint) {
    println("\(direction)")
}

someFunction(.North) // prints out "North"
someFunction(.Audi) // error(CompassPoint.Type does not have member named 'Audi')

我正在嘗試在Swift中創建一個函數,它接受兩種類型的枚舉,也可能在未來的其他類型。 有誰知道如何創建一個接受所有枚舉的函數?

如何使someFunction的參數類型為Printable? 像這樣:

func someFunction(typeToPrint: Printable) {
     println("\(typeToPrint)")
}
someFunction(CompassPoint.North)
someFunction(Cars.Audi)

您可以通過創建另一個包含所有其他枚舉的枚舉來像這樣使用它

enum CompassPoint: String, Printable {
case North = "North"
case South = "South"
case East = "East"
case West = "West"

var description: String {
    get {
        return self.rawValue
    }
}

}

enum Cars: String, Printable {
case Audi = "Audi"
case Lexus = "Lexus"
case Volkswagen = "Volkwagen"
case Jaguar = "Jaguar"


var description: String {
    get {
        return self.rawValue
    }
}

}

enum combined
{
case comp(CompassPoint)
case car(Cars)
}


func someFunction(direction: combined) {
println("\(direction)")
}




someFunction(combined.comp(.North))// prints out "North"
someFunction(combined.car(.Audi))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM