对于给定的泛型函数func myGenericFunction<T>() -> T { }
我可以设置泛型将使用的类let _:Bool = myGenericFunction()
有没有办法做到这一点,所以我不必在另一行上分别定义一个变量?
例如:anotherFunction(myGenericFunction():Bool)
最佳答案
编译器需要一些上下文来推断T
类型。在一个
变量赋值,可以通过类型注释或强制类型转换来完成:
let foo: Bool = myGenericFunction()
let bar = myGenericFunction() as Bool
如果
anotherFunction
采用Bool
参数,则anotherFunction(myGenericFunction())
可以正常工作,然后从参数类型推断出
T
。如果
anotherFunction
采用通用参数,则再次转换作品:
anotherFunction(myGenericFunction() as Bool)
另一种方法是将类型作为参数传递
反而:
func myGenericFunction<T>(_ type: T.Type) -> T { ... }
let foo = myGenericFunction(Bool.self)
anotherFunction(myGenericFunction(Bool.self))