第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Scala 編譯錯誤 Vert.x 響應(yīng)未來

Scala 編譯錯誤 Vert.x 響應(yīng)未來

江戶川亂折騰 2023-03-31 14:39:10
我正在嘗試從https://vertx.io/docs/vertx-core/scala/#_the_event_bus_api復(fù)制代碼,但出現(xiàn)編譯錯誤。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 functionThe 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我環(huán)顧四周但沒有成功。感謝提前!
查看完整描述

1 回答

?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個贊

解決方法如下:


所以vertx.eventBus.sendFuture返回一個Future[Message[T]。 Future的onComplete方法采用一個參數(shù),它是一個函數(shù)f: (Try[T]) => U。


你在那里做的是你正在使用一個必須完全聲明參數(shù)類型的匿名函數(shù)。


您需要指定簽名的簽名f。


我猜有兩個選擇:


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)

=== 稍作編輯以添加簡單的解釋==


看看附圖:

http://img1.sycdn.imooc.com//642680380001260006560223.jpg

紅色的代碼實(shí)際上是一個沒有名字(匿名)的函數(shù)體,編譯器需要知道它的簽名(它的參數(shù)和它們的類型)。

這樣做.onComplete { ...或是.onComplete(f)相同的,但如果您f在其他地方定義,您已經(jīng)定義了它的簽名。如果沒有,你需要這樣做.onComplete { x: Try[Message[_]] => ...。

(小提醒:在 Scala 中你可以這樣定義函數(shù)val double = (i: Int) => { i * 2 }


查看完整回答
反對 回復(fù) 2023-03-31
  • 1 回答
  • 0 關(guān)注
  • 162 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號