将类作为param传递给函数,该函数在swift中返回此类型的对象?

时间:2017-04-03 13:41:52

标签: swift class instantiation func function-parameter

我需要写这样的东西:

func createInstanceOfClass(someClass: Class) -> UIViewController {
  var vc = someClass()

  //some initialization
  ...
  //

  return 
}

我发现了一些类似的问题,但其中一些不适合这项任务,一些关于param T似乎是额外的。

1 个答案:

答案 0 :(得分:4)

以下是如何执行此操作的示例。使用T.Type引用TT.self的元型,以引用类型T

protocol DefaultConstructible {
    init()
}

class A: DefaultConstructible {
    required init() {}
}

struct B: DefaultConstructible {
    init() {}
}

func makeAnInstance<T: DefaultConstructible>(of c: T.Type) -> T {
    return c.init()
}

let a = makeAnInstance(of: A.self)
let b = makeAnInstance(of: B.self)