芬兰湾的科特林.希望有条件的.如何修复?



我正在编写一个kotlin解析器库,并面临以下问题:

我的代码
fun main(args : Array<String>) {
val test = "jap"
val url = when (test) {
"jap" -> "https://staticlib.me/manga-list?types[]=10",
"cor" -> "https://staticlib.me/manga-list?types[]=11",
"chi" -> "https://staticlib.me/manga-list?types[]=12",
"eng" -> "https://staticlib.me/manga-list?types[]=13",
"rus" -> "https://staticlib.me/manga-list?types[]=14",
"fan" -> "https://staticlib.me/manga-list?types[]=15",
"all" -> "https://staticlib.me/manga-list",
else -> "https://staticlib.me/manga-list?types[]=10"
}
println(url)
}

错误消息

compiler.kotlin:11:62: error: expecting a when-condition
"jap" -> "https://staticlib.me/manga-list?types[]=10",
^
compiler.kotlin:12:62: error: expecting a when-condition
"cor" -> "https://staticlib.me/manga-list?types[]=11",
^
etc.

我如何解决它?

您必须删除when表达式中的逗号:

fun main(args : Array<String>) {
val test = "jap"
val url = when (test) {
"jap" -> "https://staticlib.me/manga-list?types[]=10"
"cor" -> "https://staticlib.me/manga-list?types[]=11"
"chi" -> "https://staticlib.me/manga-list?types[]=12"
"eng" -> "https://staticlib.me/manga-list?types[]=13"
"rus" -> "https://staticlib.me/manga-list?types[]=14"
"fan" -> "https://staticlib.me/manga-list?types[]=15"
"all" -> "https://staticlib.me/manga-list"
else -> "https://staticlib.me/manga-list?types[]=10"
}
println(url)
}

你也可以这样改进你的代码:

fun main(args : Array<String>) {
val test = "jap"
var url = "https://staticlib.me/manga-list"
if (test != "all") url += "?types[]=" + when (test) {
"jap" -> "10"
"cor" -> "11"
"chi" -> "12"
"eng" -> "13"
"rus" -> "14"
"fan" -> "15"
else  -> "10"
}
println(url)
}

编辑

正如gidds在评论中建议的那样,这里有另一种改进代码的方法:

fun main(args : Array<String>) {
val test = "jap"
val types = when (test) {
"jap" -> "10"
"cor" -> "11"
"chi" -> "12"
"eng" -> "13"
"rus" -> "14"
"fan" -> "15"
"all" -> null
else  -> "10"
}
val url = "https://staticlib.me/manga-list" + types?.let{ "?types[]=$it" }
println(url)
}

最新更新