Próba utworzenia listy krotek pokazujących krotność współczynnika prime ... chodzi o dopasowanie każdej liczby całkowitej do posortowanej listy z pierwszą wartością w krotce, z wykorzystaniem drugiej wartości do zliczenia. Prawdopodobnie może to zrobić łatwiej z takeWhile
, ale meh. Niestety moje rozwiązanie się nie skompiluje:Stabilny identyfikator wymagany podczas dopasowywania wzorca? (Scala)
def primeFactorMultiplicity (primeFactors: List[Int]) = {
primeFactors.foldRight (List[(Int, Int)]()) ((a, b) => (a, b) match {
case (_, Nil) => (a, 1) :: b
case (b.head._1, _) => (a, b.head._2 + 1) :: b.tail
case _ => (a, 1) :: b
})
}
Mówi "błąd: wymagany jest stabilny identyfikator, ale znaleziono b.head._1". Ale zmieniając drugą linię case
do następujących działa dobrze:
case (i, _) if (i == b.head._1) => (a, b.head._2 + 1) :: b.tail
Dlaczego to jest i dlaczego nie może sobie poradzić, jeśli kompilator nie jest taki prosty fix?
Cheers, wygląda na to, że nie rozumiem, jak pasujące do wzorca pracował. Prawdopodobnie przeczytałbym książkę o Scali jednego z tych dni. –
@Luigi: Proponuję zacząć tutaj http://www.artima.com/pins1ed/;) –