0
我對scala和編程一般都很陌生(僅僅爲了好玩),我試圖理解尾遞歸和集合,但調試非常困難。斯卡拉尾遞歸在2個列表之間相交
我有2所列出:
val quoters = List[Map[String,List[String]]]
val quoted = List[Map[String,List[String]]]
例如:
val quoters = List(Map("author1"->List("1","7","8")),Map("author2"->List("2","4","6","3")),Map("author3"->List("5","2","1","3")))
val quoted = List(Map("author1"->List("5","6")),Map("author2"->List("5","8","1")),Map("author3"->List("4")))
「quoters」 引用 「引用」 和 「援引」 也引述 「quoters」。
在這個例子中,:
author1 quoted author2 with "1" and "8",
author2 quoted author3 with "4",
author3 quoted author1 with "5" & author2 with "5" + "1"
我想找到的 「quoters」 說帖圈 「援引」 說帖 「quoters」 ...
輸出應該是這樣的:
val quotesCircle = List(
Map("quoter"->"author1","receiver"->"author2","quote"->"4"),
Map("quoter"->"author2","receiver"->"author3","quote"->"2"),
Map("quoter"->"author3","receiver"->"author1","quote"->"1")
)
我的問題:
1 /我想我濫用集合(這似乎太像的Json ...)
2 /我能得到交叉口只是列表列出的有:
def getintersect(q1:List[List[String]],q2:List[List[String]])={
for(x<-q1;r<-q2; if (x intersect r) != Nil)yield x intersect r
}
但與地圖列表的結構。
3 /我想這對於遞歸,但它不工作,因爲......嗯,我真的不知道:
def getintersect(q1:List[List[String]],q2:List[List[String]])= {
def getQuotedFromIntersect(quoteMatching:List[String],quoted:List[List[String]]):List[List[String]]={
for(x<-q1;r<-q2; if (x intersect r) != Nil)
getQuotedFromIntersect(x intersect r,quoted)
}
}
我希望我足夠清楚:/
謝謝提前 !
Felix
嗨Giorgos,謝謝。我被我的數據結構困住了(你的清潔程度要好得多......)是的,我應該去找一個有向圖。更簡單! – user2648879