BuilderInference所在位置是kotlin.BuilderInference,其相关用法介绍如下。

用法:

@Target([AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY]) @ExperimentalTypeInference annotation class BuilderInference

允许从函数的注释函数参数中的调用推断函数的泛型类型参数。

当此注解放置在函数的泛型函数参数上时,它可以从传递给该参数的 lambda 主体推断该泛型函数的类型参数。

影响推理的调用或者是带注释的函数参数的接收器类型的成员,或者是该类型的扩展。扩展本身必须使用 @BuilderInference 进行注释。

示例:我们声明

fun <T> sequence(@BuilderInference block: suspend SequenceScope<T>.() -> Unit): Sequence<T>

并像使用它一样

val result = sequence { yield("result") }

在这里,结果序列的类型参数从 SequenceScope.yield 函数的参数推断为 String,该函数在传递给 sequence 的 lambda 内部调用。

注意:此注释是实验性的,请参阅ExperimentalTypeInference 了解如何选择加入它。