Kotlin 如何访问对象';集合中每个对象的方法?

Kotlin 如何访问对象';集合中每个对象的方法?,kotlin,Kotlin,我是Kotlin的新手,我试图弄清楚如何访问存储在集合中的每个对象的对象方法。例如: open class Book(val title: String, val author: String) { companion object BookConstants { const val BASE_URL = "https://kbooks.co/" } open fun buildBookUrl(): String { return "$BA

我是Kotlin的新手,我试图弄清楚如何访问存储在集合中的每个对象的对象方法。例如:

open class Book(val title: String, val author: String) {
    companion object BookConstants {
        const val BASE_URL = "https://kbooks.co/"
    }
    open fun buildBookUrl(): String {
        return "$BASE_URL$title.html"
    }
}

fun main(args: Array<String>) {
    val allBooks = setOf<Book>(Book("Book Title 1", "Author 1"),
        Book("Book Title 2", "Author 2"),
        Book("Book Title 3", "Author 3"))

    //CODE HERE to access each book in `allBooks` set and call `buildBookUrl()` on it to get each custom url string


}
开放类图书(val标题:String,val作者:String){
伴生对象常数{
const val BASE_URL=”https://kbooks.co/"
}
打开buildBookUrl():字符串{
返回“$BASE_URL$title.html”
}
}
趣味主线(args:Array){
val allBooks=setOf(书(“书名1”,“作者1”),
本书(“书名2”、“作者2”),
书(“书名3”,“作者3”))
//在此处编写代码以访问“allBooks”集中的每本书,并对其调用“buildBookUrl()”,以获取每个自定义url字符串
}

val url=allBooks.map{it.buildBookUrl()}
@Slaw,我不想映射它,但我最终找到了正确的函数。谢谢你的链接
allBooks.forEach{it.buildBookUrl()}
我最初的想法是
forEach
,但你的措辞听起来像是想要结果。由于
buildBookUrl()
除了返回结果(即不设置任何状态)之外什么都不做,因此我认为
map
可能更合适,因为您有一个包含每个URL的
列表。
forEach
的问题是它不返回任何内容(因此您必须使用
forEach
中的URL)。注意:您还可以使用
associateBy
将每个URL映射到它的书籍,反之亦然,使用
associateWith
(两者都提供了一个
map
)。不管怎样,很高兴你找到了一个解决方案。是的,我没有试图把它保存在内存中,因为我已经在内存中有了一个对象列表。只是想找出访问对象集合中的对象方法的不同方法。我明白为什么你现在建议
.map
,因为方法
buildBookUrl()
返回一个字符串,但这对我来说只是一个范围练习。