9

バージョン 2.10 より前の Scala シーケンス型には、ある型から別の型に変換するためのtoListやのようなメソッドがありました。toArrayScala 2.10 の時点でto[_]、 egto[List]があり、これは と 友人を包含しているように見え、また、おそらく独自のコレクション型toListなどの新しい型に変換する機能も提供します。Vectorそしてもちろん、型パラメーターとしてしか知らない型に変換する機能も提供しますto[A]

しかし、なぜ古い方法が非推奨にならなかったのでしょうか? 彼らは速いですか?toList動作するがto[List]動作しない場合はありますか? 両方が機能する場合、どちらかを優先する必要がありますか?

4

2 に答える 2

7

toListはとして実装されTraversableOnceているto[List]ため、パフォーマンスに目立った違いはありません。

ただし、前者が適切なサイズの配列を割り当て、後者が最初に配列を作成してからサイズのヒントを設定するtoArray場合よりも(ごくわずかに)効率的です(すべてのターゲットコレクションタイプの場合と同様)。to[Array]タイトなループでデータを配列に変換しない限り、これは実際のアプリケーションに違いをもたらすことはありません。

古い方法は簡単に廃止される可能性があり、将来的には廃止されると思いますが、人々はそれらに慣れているため、すぐに廃止すると一部の人々はおそらく怒るでしょう。

于 2013-03-04T18:27:27.070 に答える
2

問題は、後置表記で to[] を使用できないことです。

scala> Array(1,2) toList
res2: List[Int] = List(1, 2)

scala> Array(1,2) to[List]
<console>:1: error: ';' expected but '[' found.
       Array(1,2) to[List]

scala> Array(1,2).to[List]
res3: List[Int] = List(1, 2)
于 2013-03-04T18:28:49.667 に答える