在Kotlin中,您可以具有如下通用功能:
fun <T> singletonList(item: T): List<T> {
// ...
}
我不理解fun关键字后<T>
的用途是什么。该函数返回List<T>
,那么<T>
的意义是什么?
答案 0 :(得分:3)
要能够创建泛型函数,编译器必须知道您要使用不同的类型。 Kotlin是(如Java或C#)强类型语言。因此,仅将不同类型传递给函数将使编译器发疯。
要告诉编译器某个函数应该接受多种类型,您需要添加“类型参数”
<T>
之后的fun
是所述“类型参数”的定义。
然后在item
参数中使用。
现在,编译器知道在调用item
时将指定singletonList(item: T)
的类型
只要做
fun singletonList(item: T) : List<T> {[...]}
会使编译器不满意,因为它不知道T
。
(只要您没有名为T
的类)
当您用逗号分隔它们时,您还可以具有多个“类型参数”:
fun <T, U> otherFunction(firstParam: T, secondParam: U): ReturnType
答案 1 :(得分:0)
这是一个通用函数,根据语言的语法要求,需要提供此部分<T>
。您可以使用它来进一步指定T
:
fun <T: Number> singletonList(item: T): List<T> {
// ...
}
具有多种通用类型也很常见:
fun <T: Number, R: Any> singletonList(item: T): R {
// ...
}