Cố gắng tạo ra một danh sách các bộ hiển thị bội số nguyên tố ... ý tưởng là khớp với mỗi số nguyên trong danh sách được sắp xếp so với giá trị đầu tiên trong một bộ, sử dụng giá trị thứ hai để đếm. Có lẽ có thể làm điều đó dễ dàng hơn với takeWhile
, nhưng meh. Rất tiếc, giải pháp của tôi sẽ không biên dịch:Số nhận dạng ổn định được yêu cầu trong khi khớp mẫu? (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
})
}
Nó nói "lỗi: số nhận dạng ổn định bắt buộc, nhưng tìm thấy b.head._1". Nhưng thay đổi case
dòng thứ hai để sau hoạt động tốt:
case (i, _) if (i == b.head._1) => (a, b.head._2 + 1) :: b.tail
Tại sao điều này, và tại sao không thể trình biên dịch đối phó nếu có một sửa chữa đơn giản như vậy?
Chúc mừng, trông giống như tôi không hiểu làm thế nào mô hình phù hợp với làm việc. Có lẽ tôi nên đọc một cuốn sách về Scala một trong những ngày này. –
@Luigi: Tôi khuyên bạn nên bắt đầu từ đây http://www.artima.com/pins1ed/;) –