在swift中设置通用T返回的类型

时间:2016-10-10 20:22:02

标签: swift swift3

对于给定的通用函数

func myGenericFunction<T>() -> T { }

我可以用

设置泛型的类

let _:Bool = myGenericFunction()

有没有办法做到这一点所以我不必在另一条线上单独定义一个变量?

ex:anotherFunction(myGenericFunction():Bool)

1 个答案:

答案 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))