2011-11-27 15 views
7

私はかなりの数のリストを持っていました。私はそれらにいくつかの操作を適用する必要があり、いくつかの条件を満たす結果だけを取る。リストは逐次的なものなので、条件を満たさない番号を見つけたら、私は探しをやめることができます。リストで.viewを使用したときの奇妙な例外

私はあまり計算をやって避けたかったので、私は、この例のように移動:

List(1,2,3,4,5).view.map(2 *).takeWhile(_ < 8) 

しかし、それは私に例外与える:

Scalaの2.9.0.1を使用して
java.lang.UnsupportedOperationException: SeqViewM(...).newBuilder 
at scala.collection.TraversableViewLike$class.newBuilder(TraversableViewLike.scala:69) 
at scala.collection.SeqViewLike$$anon$3.newBuilder(SeqViewLike.scala:77) 
at scala.collection.IterableLike$class.takeWhile(IterableLike.scala:139) 
at scala.collection.SeqViewLike$$anon$3.takeWhile(SeqViewLike.scala:77) 
at scala.collection.SeqViewLike$$anon$3.takeWhile(SeqViewLike.scala:77) 

(同じことを2.9.1での行動)。ここで何が間違っていますか?

+0

2.8でうまく動作します –

答えて

5

バグのようです。もしあれば(.toListをドロップ

List(1,2,3,4,5).iterator.map(2 *).takeWhile(8 >).toList 

:(!それはすでに報告および/または固定されていないなら、バグレポートをファイル)

一方で、あなたは、この特定のコードのための回避策として、イテレータを使用することができますイテレータで終わることを嬉しく思います)。

関連する問題