Builder Inference
Начиная с Kotlin: 1.3
annotation class@Target(allowedTargets = [AnnotationTarget.VALUE_PARAMETER,AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY ] ) BuilderInference
Устарело
Предупреждение с версии 2.0
Ошибка с версии 2.5
Скрыто с версии 2.6
Аннотацию BuilderInference больше нельзя использовать. Вывод типов в builder-вызовах при необходимости включается автоматически.
Позволяет выводить аргументы обобщённых типов функции на основе вызовов в аннотированном параметре этой функции.
Если поместить эту аннотацию на параметр обобщённой функции, она позволит выводить аргументы типов этой обобщённой функции из тела лямбда-выражения, переданного этому параметру.
В выводе типов участвуют вызовы членов типа-получателя аннотированного параметра функции или расширений для этого типа. Сами расширения должны быть аннотированы с помощью @BuilderInference.
Пример: объявим
fun <T> sequence(@BuilderInference block: suspend SequenceScope<T>.() -> Unit): Sequence<T>
и воспользуемся этим следующим образом:
val result = sequence { yield("result") }
Здесь аргумент типа результирующей последовательности выводится как String на основе аргумента функции SequenceScope.yield, которая вызывается внутри лямбда-выражения, переданного в sequence.
Примечание: Эта аннотация устарела и больше не должна использоваться. Компилятор автоматически включает вывод типов в builder-вызовах, когда это необходимо.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-builder-inference/index.html