Как использовать встроенные преимущества Kotlin, когда функция имеет объект с лямбда-параметром - PullRequest
0 голосов
/ 01 июля 2018

Допустим, у меня есть класс данных, как это

private data class StubModel<T>(
        val invocation: ItemsFactory.() -> T?,
        val returnValue: T
)

и у меня есть такая функция

private fun <T> stubIt(stubs: List<StubModel<T>>) {
    for (stub in stubs) {
        whenever(stub.invocation()).thenReturn(stub.returnValue)
    }
}

Теперь, когда я пытаюсь встроить функцию stubIt, я не получаю никаких преимуществ в производительности (т. Е. Параметр лямбда в StubModel не встроен, поэтому я хочу использовать силу встроенного), как мне получить kotlin? компилятор для включения лямбда-параметра в классе модели на сайте вызова?

1 Ответ

0 голосов
/ 01 июля 2018

Это не возможно. Как свойство вашего StubModel, invocation должен быть экземпляром объекта и храниться как таковой. Это именно то, для чего предназначены inline функции. Кроме того, наличие списка в качестве параметра делает невозможным что-либо встроенное, потому что как компилятор должен знать о значениях в время выполнения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...