当前位置: 首页 > 知识库问答 >
问题:

Scala编译错误Vert.x响应未来

仉宪
2023-03-14
override def start(): Unit = {
    vertx.eventBus.sendFuture("anAddress", "message 1").onComplete {
      case Success(result) => {
        println("The handler un-registration has reached all nodes")
      }
      case Failure(cause) => {
        println(s"$cause")
      }
    }
  }

我得到这个错误:

missing parameter type for expanded function
The argument types of an anonymous function must be fully known. (SLS 8.5)
Expected type was: scala.util.Try[io.vertx.scala.core.eventbus.Message[?]] => ?
    vertx.eventBus.sendFuture("anAddress", "message 1").onComplete {
                                                                   ^

我该怎么解决这个?

我使用的是Scala 2.12.8和Vert.x 3.7.1

感谢提前!

共有1个答案

邢臻
2023-03-14

以下是解决这个问题的方法:

因此vertx.eventbus.sendfuture返回future[message[T]future

您在这里所做的是使用一个匿名函数,该函数的参数类型必须完全声明。

我想有两个选择:

1)

vertx.eventBus.sendFuture("anAddress", "message 1").onComplete { x: Try[Message[_]] =>
  x match {
    case Success(result) => {
      println("The handler un-registration has reached all nodes")
    }
    case Failure(cause) => {
      println(s"$cause")
    }
  }
}

2)

// define f
def f(x: Try[Message[_]]) = x match {
  case Success(result) => {
    println("The handler un-registration has reached all nodes")
  }
  case Failure(cause) => {
    println(s"$cause")
  }
}

// and later use it
vertx.eventBus.sendFuture("anAddress", "message 1").onComplete(f)

 类似资料:
  • 我有一个等待未来结果的演员。在将来的Complete上调用会导致编译器错误: 错误:构造函数无法实例化为预期的类型 [scalac] 找到 : akka.actor.Status.Success [scalac] required: scala.util.Try[Iterable[Any]] [scalac] case Success(result: List[PCBInstanceStats])

  • 我试图编译一个MavenJava /Scala混合项目,它有一个Scala类,该类依赖于带有lombok注释的Javabean。我尝试将lombok jar文件添加到Scala编译器的引导类路径以及lombok代理中,但是编译器仍然无法找到生成的getters。Scala编译器是否有办法识别Lombok注释?如果没有,什么是好的解决方案? 请注意,我试图避免引入另一个maven项目,只是为了先编译

  • 问题内容: 当我在Netbeans中构建并运行程序时,它可以正常工作。但是当我尝试“ mvn compile”时,使用相同的pom.xml文件会出现以下错误: 我的Java版本不是1.3,这里是“ mvn -version”的结果 这是第53行: 问题答案: 问题是在Maven2中默认使用和 您可以通过将其添加到pom中来解决此问题: 将其放在最顶层的父pom中是很实际的,这样您派生的pom不需要

  • 我遇到了一个初学者的编译错误: 我的简单程序: 我尝试使用以下命令编译它: gcc-g-Wall-ansi launch_瓷砖。c-o tiles\u程序 并得到这些错误: 启动_tiles。c: 在函数“main”中: launch_tiles. c: 17:19:错误:预期')'之前';'令牌 launch_tiles. c: 17:19:错误:太少的参数函数'fget' /usr/inclu

  • 当我退出我的应用程序时,这个folloeing错误已经产生。

  • 我是Scala和SBT的新手,所以我可能会遗漏一些明显的东西。 我试图编译http://www.scalafx.org/docs/quickstart/上的HelloWorld示例