我目前正在閱讀鏈接的檔案,我有以下內容...
val builder = CsvSchema.builder()
splitString.foreach(col=>builder.addColumn(col));
header = builder.build()
val it: MappingIterator[util.Map[String, String]] =
mapper.readerForListOf(classOf[String])
.with(header)
.readValue(line);
這似乎與演示代碼匹配,但是當我嘗試運行時,我得到...
Service.scala:<1369..1373>:預期的識別符號,但找到了“with”
我也沒有看到 with 作為自動完成中的一個選項。我需要什么?
uj5u.com熱心網友回復:
似乎已經得到它...
val it: MappingIterator[util.Map[String, String]] =
mapper.readerForListOf(classOf[String])
.`with`(header)
.readValue(line);
uj5u.com熱心網友回復:
with是Scala 中的保留字。保留字是不合法的識別符號,請參閱第1.1節識別符號的的斯卡拉語言規范[大膽重點煤礦]:
以下名稱是保留字,而不是詞法識別符號的句法類id的成員。
識別符號也可以由[我的粗體強調]構成:
最后,識別符號也可以由反引號之間的任意字串形成(主機系統可能會對哪些字串對識別符號合法施加一些限制)。然后識別符號由除反引號本身之外的所有字符組成。
請注意短語“任意字串”,沒有任何限制。這意味著,它也可以是保留字。
您遇到的確切問題實際上已得到明確解決:
當需要訪問 Scala 中作為保留字的 Java 識別符號時,請使用反引號括起來的字串。例如,該陳述句
Thread.yield()是非法的,因為它yield是 Scala 中的保留字。但是,這里有一個解決方法:Thread.`yield`()
作為旁注:您應該嘗試使用不同的 IDE 或編輯器。即使是 Stack Overflow 上極其簡單、蹩腳的語法突出顯示也清楚地表明了您的問題中的問題:with突出顯示為保留字,與val. 一個好的 IDE 或編輯器應該做同樣的事情,并立即告訴你這with是一個保留字,而不是一個合法的識別符號。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/381430.html
上一篇:Spark:如何將字串轉換為多列
