0

私はscalaに不慣れで、自由な時間にそれをいじっているだけで、この問題に遭遇しました:

このリストがある場合:

 val list = List(1,2,3,4)

そして次のように言います。

 val newList = list :: 5

スカラが教えてくれる

 error: value :: is not a member of Int

しかし、私が言うなら:

 val newList = list ::: List(5)

scalaはそれで完全に大丈夫です。要素を aに追加できないのに、 a のすべての要素を aの末尾に追加できるのはなぜですかListListList

4

1 に答える 1

7

構文が逆になっています。

5 :: list

これにより、要素5が の先頭に追加されlistます。

Scala では、コロン ( :) で終わる演算子は右結合です。そのため、メソッド onを5 :: list呼び出して、引数 を渡します。::list5

機能する理由list ::: List(5)は、実際listには の前に追加されているためですList(5)

ちなみに、 には、それぞれ prepend と appendListの演算子+:とがあります。(ただし、a の先頭に追加すると O(1) になり、追加すると O(n):+になることに注意してください。)List

于 2012-05-19T16:48:53.413 に答える