我正在编写一个 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)
}
Run Code Online (Sandbox Code Playgroud)
错误信息
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.
Run Code Online (Sandbox Code Playgroud)
我该如何解决它?
您必须删除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)
}
Run Code Online (Sandbox Code Playgroud)
您还可以按如下方式改进代码:
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)
}
Run Code Online (Sandbox Code Playgroud)
编辑
正如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)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
652 次 |
| 最近记录: |