我有一個Java函數返回一個由Scala函數構建的對象。 Java的功能看起來像這樣如何在Scala中使用Java函數的結果?
import frontEnd.Builder ;
import frontEnd.AST.DeclList ;
public class Parser {
Builder builder ;
public DeclList Start() {
DeclList result=builder.declList() ;
...
return result ; } }
其中AST
是一個特點,Builder
是擴展AST
和DeclList
是一個特徵的一類。 builder.declList
返回builder.DeclList
類型的值。 (這看起來很複雜,但都是編譯的,我認爲它是有道理的,如果有幫助,我很樂意改變它,特別是我懷疑,如果我可以不使用路徑依賴類型,下面的問題不會)。
到目前爲止,這麼好。問題是當我從Scala代碼調用Parser.Start
時,結果的類型爲<none>
或<notype>
,具體取決於我選擇相信哪個錯誤消息。這是調用開始的Scala代碼。
val p : Parser = new Parser(stream)
val builder = new frontEnd.Builder() ;
p.setBuilder(builder)
val dl : builder.DeclList = p.Start()
最後一行具有
../src/tests/ParserTests.scala:19: error: type mismatch;
found : <notype>
required: builder.DeclList
val dl : builder.DeclList = p.Start()
^
one error found
嘗試 'val dl:frontend.AST.DeclList = p.Start()' –