我了解使用Swift可以通过以下形式指定特定于函数的泛型:

func someFunction<T>(type: T.Type) {...}

但是,是否可以对下标进行类似的操作?您可以在方括号内指定类型,如下所示:
subscript<T>(type: T.Type) -> T {...}

编辑:根据接受的答案更新了解决方案
subscript(type: AnyClass.Type) -> Any {
    return sizeof(type)
}

编辑2:经过测试,似乎我实际上不能使用此下标。我得到“CLASS与AnyClass.Type不同”的信息,所以我回到平方

最佳答案

您不能将subscript定义为泛型函数,但是如果在类级别声明了泛型,则可以使用泛型。

例如,假设您要创建一个类,其中subscript采用T类型并返回U类型。看起来像:

class SomeClass<T, U> {
    subscript(someParameter: T) -> U {
        /* something that returns U */
    }
}

例如,您可以创建一个Converter类,该类使用subscript函数将T类型转换为U类型:

注意:这是一个非常人为的示例,我通常不会这样做。
class Converter<T, U> {
    var _converter: (T -> U)

    init(converter: (T -> U)) {
        _converter = converter
    }

    subscript(input: T) -> U {
        let output = _converter(input)
        return output
    }
}

var convert = Converter(converter: {
    (input: Int) -> String in
    return "The number is: \(input)"
})

let s = convert[1]
println(s) // The number is: 1

10-07 20:12