24
list1 == list2

上記のチェックを行うために、Scala は両方のリストを反復処理し、要素の各ペアに対して equals を呼び出しますか?

(確かに、この質問は以前に尋ねられましたが、Google & Co で適切な回答を見つけることができませんでした)

4

1 に答える 1

40

Scaladoc を見て、それが定義されている場所を見つけてから、ソースを調べることで、任意のメソッドについてこれを自分で見つけることができます。オンライン ドキュメントから開始する場合は、クリックするだけでこれをすべて実行できます。メソッドに移動し、左側の矢印をクリックして開くと、オーバーライド クラスのリストが表示されます。最初のものに行き、ソースを見てください。

とにかく、この場合、および他の多くのコレクションGenSeqLikeのスーパートレイトである は、チェックの後に が続くものとして定義します。次に、両方の引数がs であるかどうかを確認し、そうである場合は、頭と尾を 1 つずつ分割することによって、要素の各ペアに対して equals を呼び出します。それ以外の場合は、デフォルトでイテレータを使用し、それぞれを呼び出してから要素を と比較します。ListequalscanEqualsameElementssameElementsLinearSeqhasNextequals

つまり、簡単に言うと、はい、要素の各ペアで equals を呼び出します (不一致が見つかるとすぐに停止します)。

于 2012-06-20T16:01:42.390 に答える