如何提高懒惰委托?

时间:2018-08-29 20:08:09

标签: kotlin delegated-properties

我如何改进此声明:

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

就像我自己的委托创建者html

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

1 个答案:

答案 0 :(得分:2)

似乎您想要一个函数html,包装lazy并返回一个Lazy<T>

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

(我不知道createHtml返回的类型,所以我假设它的名称为Html。)

但是,我不确定这是否是一个好的设计,因为它失去了lazy的语义值,并且因为它确实确实可以节省一些字符,但这只是我的看法。