Generics 无参数的swift泛型函数

Generics 无参数的swift泛型函数,generics,swift2,Generics,Swift2,如何在此代码段中指定子类? 它没有返回任何内容,因此编译器无法推断类型。如果没有编译器错误,我也不能调用root.addSublayers[a,b] 可能的功能: func addSublayers(names: [String]? = nil, ofSubType type:???) func addSublayers<type: CALayer>(names: [String]? = nil) 试着这样做: func addSublayers<T: CALayer>

如何在此代码段中指定子类? 它没有返回任何内容,因此编译器无法推断类型。如果没有编译器错误,我也不能调用root.addSublayers[a,b]

可能的功能:

func addSublayers(names: [String]? = nil, ofSubType type:???)
func addSublayers<type: CALayer>(names: [String]? = nil)

试着这样做:

func addSublayers<T: CALayer>(names: [String]? = nil, asdf : T)
{
    for name in names!
    {
        let layer = T() //init a custom subclass of CALayer
        layer.name = name
        self.addSubLayer(layer)
    }
}
还是这个

func addSublayers<T: CALayer>(names: [String]? = nil) ->T?
{
    for name in names!
    {
        let layer = T() //init a custom subclass of CALayer
        layer.name = name
        self.addSubLayer(layer)
    }
    return nil
}

我一直在浏览xcode发行说明。它说初始化器现在可以像静态方法一样通过引用来引用。在静态类型引用或类型对象上使用init有什么方法可以利用它吗?为什么要这样做?我不认为这对这个案子有什么帮助。除非更改自定义类,使init采用字符串,然后可以在initOr extend ca层中设置名称并添加自己的init。我认为这是可以做到的。因为我不想添加一个伪参数asdf或返回一个不必要的nil值,所以我将立即尝试?我只想指定一个类型并初始化一个实例。就像obj-c中的classFromString一样,好吧,让我把这件事讲清楚。您想创建任何具有子类型CALayer的类,然后将其添加到什么?风景?您如何知道要创建哪一个?还是你只是在做烤面包?
func addSublayers<T: CALayer>(names: [String]? = nil) ->T?
{
    for name in names!
    {
        let layer = T() //init a custom subclass of CALayer
        layer.name = name
        self.addSubLayer(layer)
    }
    return nil
}