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中创建一个函数,它接受两种类型的枚举,也可能在未来的其他类型。有谁知道如何创建一个接受所有枚举的函数?
答案 0 :(得分:0)
如何使someFunction的参数类型为Printable?像这样:
func someFunction(typeToPrint: Printable) {
println("\(typeToPrint)")
}
someFunction(CompassPoint.North)
someFunction(Cars.Audi)
答案 1 :(得分:0)
您可以通过创建另一个包含所有其他枚举的枚举
来使用它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))