根据Swift中的参数返回不同类型的数据

时间:2015-08-18 22:49:46

标签: ios macos swift

我有不同的clases,每个都有自己的方法返回不同的类型。我不想重复自己一遍又一遍地写同样的东西 - 感觉就像一个不好的做法,我想知道是否可以使用一个函数返回对象,具体取决于函数中给出的参数。举个例子:

func myFunction(type: String) -> ?? {
   switch type {
       case myClass1:
           return objectTypeMyClass1
           break;
       case myClass2:
           return objectTypeMyClass2
           break;
       case myClass3:
           return objectTypeMyClass3
           break;
       default: 
           break;
   }
}

这是一个好习惯吗?这是可能的。

1 个答案:

答案 0 :(得分:1)

您可以使用enum作为类型的容器(类似于Apple执行选项的方式):

enum TypeContainer {
    case SomeInt(Int)
    case SomeString(String)
    case SomeBool(Bool)

    init(int: Int) {
        self = .SomeInt(int)
    }

    init(string: String) {
        self = .SomeString(string)
    }

    init(bool: Bool) {
        self = .SomeBool(bool)
    }
}

let a = TypeContainer(string: "123")
let b = TypeContainer(int: 88)
let c = TypeContainer(bool: true)

switch a {
case .SomeInt(let i):
    println(i)
case .SomeString(let s):
    println(s)
case .SomeBool(let b):
    println(b)
default:
    break
}