对于给定的通用函数
func myGenericFunction<T>() -> T { }
我可以用
设置泛型的类 let _:Bool = myGenericFunction()
有没有办法做到这一点所以我不必在另一条线上单独定义一个变量?
ex:anotherFunction(myGenericFunction():Bool)
答案 0 :(得分:6)
编译器需要一些上下文来推断类型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))