Как улучшить ленивого делегата?

Как я могу улучшить эту декларацию:

val __name: String by lazy {
     createHTML().small {
         +name
     }
}

вроде как мой собственный делегат строитель html:

val __name: String by html {
    small {
        +name
    }
}

1 ответ

Кажется, вы хотите функцию html, упаковка lazy и возвращая Lazy<T>:

fun html(builder: Html.() -> Unit) = lazy { createHtml().builder() }

(Я не знаю тип, возвращаемый createHtmlтак что я предполагаю, что это называется Html.)

Я не уверен, что это хороший дизайн, так как он теряет смысловую ценность lazyИ потому, что он действительно служит только для сохранения нескольких символов, но это только мое мнение.

Другие вопросы по тегам