Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将类作为参数传递到函数中,该函数在swift中返回此类型的对象?_Swift_Class_Instantiation_Func_Function Parameter - Fatal编程技术网

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

将类作为参数传递到函数中,该函数在swift中返回此类型的对象?,swift,class,instantiation,func,function-parameter,Swift,Class,Instantiation,Func,Function Parameter,我需要这样写: func createInstanceOfClass(someClass: Class) -> UIViewController { var vc = someClass() //some initialization ... // return } 我发现了一些类似的问题,但其中有些问题不适合此任务,有些问题关于paramT,这似乎是多余的。下面是一个示例,说明如何执行此操作。使用T.Type引用T的元类型,使用T.self引用类型T prot

我需要这样写:

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

  //some initialization
  ...
  //

  return 
}

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

下面是一个示例,说明如何执行此操作。使用
T.Type
引用
T
的元类型,使用
T.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)
protocoldefaultconstructible{
init()
}
A类:默认可构造{
必需的init(){}
}
结构B:DefaultConstructible{
init(){}
}
func生成一个实例(c:T.Type)->T{
返回c.init()
}
让a=做出一个立场(关于:a.自我)
让b=表示立场(关于:b.自我)

以下是一个示例,说明了如何执行此操作。使用
T.Type
引用
T
的元类型,使用
T.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)
protocoldefaultconstructible{
init()
}
A类:默认可构造{
必需的init(){}
}
结构B:DefaultConstructible{
init(){}
}
func生成一个实例(c:T.Type)->T{
返回c.init()
}
让a=做出一个立场(关于:a.自我)
让b=表示立场(关于:b.自我)

您的函数正在返回ViewController。那是什么?固定密码。简单地说,在我的特殊情况下,这个方法根据给定的视图控制器的类创建并初始化视图控制器。您需要的是一个通用函数,这就是为什么您找到的答案使用
T
参数的原因。我建议您阅读Swift中的泛型,然后再看看您找到的答案。您的函数将返回ViewController。那是什么?固定密码。简单地说,在我的特殊情况下,这个方法根据给定的视图控制器的类创建并初始化视图控制器。您需要的是一个通用函数,这就是为什么您找到的答案使用
T
参数的原因。我建议阅读Swift中关于泛型的内容,然后再看看你找到的答案。