我可以将构建器模式与 lambda 表达式结合使用吗?

Can I combine the builder pattern with a lambda expression?

以下 lambda 表达式对在 lambda 外部创建的 class 进行操作。 我认为这很笨拙。有更好的方法吗?

class Builder {
    var searchTerms = listOf<String>()
    fun build(whatever: String): Builder {
        searchTerms = searchTerms +  whatever
        return this
    }
}

fun main() {
   val b = Builder()
   val toSearch = listOf<String>("Anna", "Berta", "Carla")
   toSearch.forEach{ e-> b.build(e)}
}

不太确定你认为它笨拙的地方,但如果你必须为临时变量创建一个不同的行,你可能会认为这个更干净:

fun main() {
    val toSearch = listOf<String>("Anna", "Berta", "Carla")
    val b = toSearch.fold(Builder()) { builder, e -> builder.build(e) }
}