我有以下解析器解析含有浮球RDD算術表達式:如何解決編譯器發現Serializable而不是匹配類型時的類型不匹配?
import scalaz._
import Scalaz._
def term2: Parser[List[\/[Float, RDD[(Int,Array[Float])]]]] = rep(factor2)
def factor2: Parser[\/[Float, RDD[(Int,Array[Float])]]] = pathxml | num
def pathxml: Parser[ RDD[(Int,Array[Float])]] = pathIdent ^^ { s => pathToRDD(s)} //pathToRDD is a function that gets the path in string and create an RDD from the file inside that path and pathIdent parse to see whether the input string is a path or not
def num: Parser[\/[Float, RDD[(Int,Array[Float])]]] = floatingPointNumber ^^ (n => n.left[RDD[(Int,Array[Float])]].toFloat)
得到以下錯誤:
[error] type mismatch;
[error] found : ParseExp.this.Parser[Serializable]
[error] required: ParseExp.this.Parser[scalaz.\/[Float,org.apache.spark.rdd.RDD[(Int, Array[Float])]]]
[error] def factor2: Parser[\/[Float, RDD[(Int,Array[Float])]]] = pathxml | num
[error] ^
我在Scala和唐新/噸知道如何解決這個錯誤
謝謝你的完整解釋。我做了建議並更改了代碼,現在我收到以下錯誤:找到類型不匹配「Product with Serializable」,爲什麼? – Rubbic
@Rubbic如果您嘗試添加一個新的(可能是暫時的)'val'爲'pathxml.map會發生什麼(_。右)'?你可以輸入「Parser [Float \/RDDThing]」嗎?您可能需要使用'pathxml.map(_。right [Float])''。 –
如果我添加「[浮點]」它會給我以下錯誤: 方法類型scala.util.Either.RightProjection [浮點的右,org.apache.spark.rdd.RDD [(中等,數組[浮點型]) ]]不帶類型參數。 – Rubbic