Конструктор, на который ссылаются таким образом, похож на любую другую ссылку на функцию. Он имеет входные данные (параметры) и возвращаемое значение (новый экземпляр класса). Вы можете передать его в функцию более высокого порядка, которая имеет параметр функции или какую-то фабрику.
Например:
class MessageWrapper(val message: String)
val someStrings = listOf("Hello world")
Вы можете преобразовать свой список, чтобы иметь тип оболочки, например это с помощью лямбда-выражения:
val someMessages: List<MessageWrapper> = someStrings.map { MessageWrapper(it) }
, но, возможно, проще пропустить перенос вашей функции в другую функцию, передавая конструктор напрямую.
val someMessages: List<MessageWrapper> = someStrings.map(::MessageWrapper)
Улучшение ясности более очевидно для функций и параметров, чем для конструкторов. Это также может помочь избежать затененных it
s, избегая вложенных лямбд.