我可以将构建器模式与 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) }
}
以下 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) }
}