已解决 一个kotlin基础问题
-
在开发插件时,想写一个函数传入正则字符串和代码块 ,但是报错了
-
上代码,上截图
-
fun reg(regex: String,block:()->Unit) { if (regex.toRegex().matches(it.contentToString())) { val list = Regex(regex).findAll(it.contentToString()).toList().flatMap(MatchResult::groupValues) block(list) } } reg("""#?\s*ping(\d{0,2}|100)?""") { group.sendMessage("正则1 ${list[1]}") }
-
异步调用写进同步方法体了
-
@nepsyn 啊,那该怎么改呢
-
每个变量都有作用域,你需要将 list 作为
lambda block
的一个参数传递过去fun a(b: (List<String>)->Unit) { b(mutableListOf()) } a { argx -> println(argx) }
-
suspend fun reg(regex: String, block: suspend (List<String>) -> Unit) { if (regex.toRegex().matches(it.contentToString())) { val list = Regex(regex).findAll(it.contentToString()).toList().flatMap(MatchResult::groupValues) block(list) } } reg("""#?\s*ping(\d{0,2}|100)?""") { list -> group.sendMessage("正则1 ${list[1]}") }
-
@nepsyn 感谢!
-
-
@karlatemp 感谢!