val x = for(i <- 1 to 3) yield i
x match {
case 1 :: rest => ... // compile error
}
constructor cannot be instantiated to expected type; found : collection.immutable.::[B] required: scala.collection.immutable.IndexedSeq[Int]Model eşleme dizisi anlamalarının deyimsel yolu nedir?
Bu MatchError when match receives an IndexedSeq but not a LinearSeq aynı sorundur.
Sorun şu ki, nasıl yapmalı? Her yerde .toList
eklemek doğru görünmüyor. Ve her Seq
'u (diğer sorunun cevabında açıklandığı gibi) idare eden kendi çıkarıcıyı yaratmak, herkesin yapacağı bir karışıklığa yol açacaktır ...
Sanırım soru, neyi etkileyemiyorum Sıralı anlamaların dönüş türü: veya neden standart kitaplığın genelleştirilmiş Seq
çıkarıcı parçası değil? Örneğin
case Seq(a, b, rest @ _ *) =>
:
Bu genelleştirilmiş çıkarıcı, 2.10: 'a val = +: b = 0 'dan 10' 'a kadarki gibi çalışır: val a :: b = (0'dan 10'a kadar) .toList' 2.9'da çalışır. –
Hmm, çok ilginç! Her ne kadar listeler için iki ekstraktörü olan bir karışıklık yaratacağından emin değilim. Bu çıkarıcı daha sonra değiştirilecek mi? Sonuçta, aynı şeyi yapabilir ve daha geneldir. – letmaik
@TravisBrown bilmek güzel. List 'Nil' de bir eşdeğer var mı? –