向我解释一些事情... 我有一个模型:
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()
}
如何解决这个问题
答案 0 :(得分:3)
如果通过传递文字函数来使用map函数,请不要将其包装在lambda中,因为那样的话,您传递的是一个仅返回函数而无需执行任何操作的函数。
所以,改变
books.map { Book ::title }
到
books.map(Book::title)
此外,您已经可以使用一个joinToString
函数,该函数比使用reduce
从Iterable创建单个String更为简单。您可以像这样使用它:
books.map(Book::title).joinToString("\n")