我不知道我那段简单的Kotlin代码出了什么问题:
fun scan(): List<File> {
val comics: List<File> = ArrayList()
val extPath = Environment.getExternalStorageDirectory().absolutePath.toString()
File(extPath).walkTopDown()
.forEach { file ->
if (isComic(file)) {
comics.add(file)
}
}
return comics
}
fun getComics(): List<Comic> {
return scan().map { comicFile ->
val comic = Comic()
comic.path = comicFile.path.toString()
return comic
}
}
(我知道getExternalStorageDirectory()
现在已经贬值了,这只是考特林速成课程的一种快捷而肮脏的方式)
Android Studio抱怨我应该在transform函数中返回List<Comic>
。
发布于 2020-11-24 03:14:37
fun getComics(): List<Comic> {
return scan().map { comicFile ->
val comic = Comic()
comic.path = comicFile.path.toString()
comic
}
}
删除' return ',{}是一个内联函数,如果在内联函数中使用'return Comic‘,它将返回’getComics: comic‘作为comic()的结果
发布于 2020-11-24 04:27:14
内联lambda中的Return语句用于从父函数的作用域返回,在这种情况下可以使用限定的return或最后一行:
fun getComics(): List<Comic> {
return scan().map { comicFile ->
val comic = Comic()
comic.path = comicFile.path.toString()
return@map comic // qualified returns
}
}
如果lambda不明确并且嵌套在map name@ { return@name ... }
中,您还可以更改其名称。
但实际上你可以这样做:
fun getComics(): List<Comic> {
return scan().map { comicFile ->
Comic().apply { path = comicFile.path.toString() } // last line return
}
}
https://stackoverflow.com/questions/64979562
复制相似问题