MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    已解决 一个kotlin基础问题

    开发交流
    kotlin plugin
    4
    9
    613
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • xiao_zheng
      xiao_zheng 摸鱼 最后由 xiao_zheng 编辑

      在开发插件时,想写一个函数传入正则字符串和代码块 ,但是报错了

      1 条回复 最后回复 回复 引用 0
      • J
        Jaqi 最后由 编辑

        上代码,上截图

        xiao_zheng 1 条回复 最后回复 回复 引用 0
        • xiao_zheng
          xiao_zheng 摸鱼 @Jaqi 最后由 编辑

          @jaqi

          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]}")
          }
          
          1 条回复 最后回复 回复 引用 0
          • N
            Nepsyn 最后由 编辑

            异步调用写进同步方法体了

            xiao_zheng 1 条回复 最后回复 回复 引用 1
            • xiao_zheng
              xiao_zheng 摸鱼 @Nepsyn 最后由 编辑

              @nepsyn 啊,那该怎么改呢

              N 1 条回复 最后回复 回复 引用 0
              • Karlatemp
                Karlatemp 最后由 编辑

                每个变量都有作用域,你需要将 list 作为 lambda block 的一个参数传递过去

                
                fun a(b: (List<String>)->Unit) {
                    b(mutableListOf())
                }
                
                a { argx -> 
                    println(argx)
                }
                
                xiao_zheng 1 条回复 最后回复 回复 引用 1
                • N
                  Nepsyn @xiao_zheng 最后由 Nepsyn 编辑

                  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]}")
                  }
                  
                  xiao_zheng 1 条回复 最后回复 回复 引用 1
                  • xiao_zheng
                    xiao_zheng 摸鱼 @Nepsyn 最后由 编辑

                    @nepsyn 感谢!

                    1 条回复 最后回复 回复 引用 0
                    • Topic has been marked as solved  xiao_zheng xiao_zheng 
                    • xiao_zheng
                      xiao_zheng 摸鱼 @Karlatemp 最后由 编辑

                      @karlatemp 感谢!

                      1 条回复 最后回复 回复 引用 0
                      • 1 / 1
                      • First post
                        Last post
                      Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact