Generics Kotlin:可变(自动推断)类型参数是否可能?

Generics Kotlin:可变(自动推断)类型参数是否可能?,generics,kotlin,variadic-functions,type-inference,Generics,Kotlin,Variadic Functions,Type Inference,我了解基本类型推断在Kotlin中是如何工作的,但我想知道我是否只能使用所有类型参数或不使用任何类型参数调用函数,或者我是否可以以某种方式定义变量类型参数;例如: fun<A: SomeClass1, B: SomeClass2, T: SomeTuple<A,B>> foo(t:SomeTuple<A,B>?=null) = doSomething<A,B,T>(t) fun-foo(t:SomeTuple?=null)=doSomething

我了解基本类型推断在Kotlin中是如何工作的,但我想知道我是否只能使用所有类型参数或不使用任何类型参数调用函数,或者我是否可以以某种方式定义变量类型参数;例如:

fun<A: SomeClass1, B: SomeClass2, T: SomeTuple<A,B>> foo(t:SomeTuple<A,B>?=null) = doSomething<A,B,T>(t)
fun-foo(t:SomeTuple?=null)=doSomething(t)
此函数可以通过
foo(someTuple)
foo()
调用,而前两个类型参数显然可以从最后一个类型参数推断出来


是否可以执行类似于
foo()
的操作,并且仍然能够在函数体内部推断和使用
A
B

我认为这是不可能的。你能用一个更具体的例子来解释你的问题的背景吗?也许有一个不同的解决方案不清楚你想在这里做什么。如果您想与可能的泛型类型的细节进行交互,并且它们之间存在着有意义的差异,那么在某个时候您必须执行一些基于类型的条件逻辑。看一看密封类和when语句?@gpunto@Laurence请看一看这个有点现实的例子:注意,
Handlers.register{println(it)}
可以工作,但是
Handlers.register{println(it)}
给出了一个编译器错误。然而,第二个类型参数显然是可推断的。