KProperty1(科特琳)

时间:2020-07-12 19:48:45

标签: kotlin generics

向我解释一些事情... 我有一个模型:

compare_type

MutableList:

data class Book (val title: String, val id: Int)

我想从可变列表的书中,在“标题”字段中填充var books = mutableListOf<Book>()

textView.text

最后我遇到错误(标记为“ reduce”):

Handler(Looper.getMainLooper()).post {
    textView.text = books.map { Book ::title }.reduce { acc, s ->  "$acc\n$s"}.toString()
}

如何解决这个问题

1 个答案:

答案 0 :(得分:3)

如果通过传递文字函数来使用map函数,请不要将其包装在lambda中,因为那样的话,您传递的是一个仅返回函数而无需执行任何操作的函数。

所以,改变

books.map { Book ::title }

books.map(Book::title)

此外,您已经可以使用一个joinToString函数,该函数比使用reduce从Iterable创建单个String更为简单。您可以像这样使用它:

books.map(Book::title).joinToString("\n")