Каков идиоматический способ сопоставления последовательностей с образцом?

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]

Это та же проблема, что и MatchError, когда match получает IndexedSeq, но не LinearSeq .

Вопрос в том, как это сделать правильно? Добавление .toListвезде кажется неправильным. И создание собственного экстрактора, который обрабатывает каждыйSeq(как описано в ответе на другой вопрос ), приведет к беспорядку, если все будут это делать...

Я предполагаю, что вопрос в том, почему я не могу повлиять на тип возвращаемого значения последовательности, или :почему такой обобщенный Seqэкстрактор не является частью стандартной библиотеки?

19
задан Community 23 May 2017 в 12:02
поделиться