0
我有以下代碼:斯卡拉置換列表(recusive類型不匹配)
type foo= List[bar]
def emtfoo= List[bar]()
def permute(s1:Set[foo],s2:Set[foo]):Set[foo]={
for{
x<-s1
y<-s2
}yield permutatefoo(x,y,e,emtfoo)
def permutatefoo(l1:foo,l2:foo,sofar:foo):Set[foo]={
if (l1.equals (emtfoo)) {
Set{sofar:+l2}
}
else
{
combine(permutatefoo(l1.drop(1),l2,l1.take(1):::sofar),
permutatefoo(l1,l2.drop(1),l2.take(1):::sofar))
}
}
def combine(s1:Set[foo],s2:Set[foo]):Set[foo] =
for{
x <- s1
y<- s2
} yield x ::: y
這應該是相當簡單的代碼到重排列2套列表爲一組同時具有列出的所有可能的permamutations在沒有元素出現在元素前面的順序不在列表本身的前面(所以如果我們有列表a = 1,2,3和列表b = a,b,c,那麼它應該返回Set { 1,a,2,b,3,c-1,2,a,3,b,ca,1,2,3,b,c ext。})。 但是我的代碼生成周圍行了一些錯誤類型mistmaches
{Set{sofar:+l2}}
和
x<-s1
沒有任何人知道如何解決這一問題?
爲了記錄這個詞是「置換」,而不是「置換」。 –