0
以下代碼會生成類型不匹配錯誤。我不明白爲什麼。scala中推斷的參數類型
var navigablemap=rst.getFamilyMap("a".getBytes())
var list = new ListBuffer[Long]()
navigablemap.keySet().forEach((e:Array[Byte]) => list+=Bytes.toLong(e))
的NavigableMap具有類型的NavigableMap [數組[字節],數組[字節]]。 人們期望ë有類型數組[字節]
編譯器將報告以下錯誤消息。
類型不匹配;發現:Array [Byte]⇒list.type(與基礎類型Array [Byte]⇒list.type)required:java.util.function.Consumer [_>:Array [Byte]]
更新:以下作品。
var keys=navigablemap.keySet()
var keysIterator=keys.iterator()
while (keysIterator.hasNext){
var e=keysIterator.next()
list+=Bytes.toLong(e)
}
因爲簡潔是我的目標之一,而我努力學習階,有沒有階一襯爲上面?
你認爲'(e:Array [Byte])在做什麼? (所以它不是推斷的參數類型,但明確的) –
是不是你在scala中使用java api?你不能簡單地通過需要java lambda的scala lambda。 –
爲什麼編譯器認爲這個類型不是'Array [Byte]'?推斷的類型與預期的(和指定的)類型不同。 –