2
erlangではすべてが不変ですか?では、リストの先頭に要素を追加すると、リストの新しいコピーが作成されず、appendを使用するたびに新しいコピーが作成されます。リストの先頭に追加しないで、erlangに新しいリストを作成しますか?
から引用:
リストを再作成して作成するときは、リストの先頭に新しい要素を追加することが重要です。このようにして、増加する結果リストの数百または数千のコピーではなく、1つのリストを作成します。
最後に追加しない理由のたびにリンクリストをトラバースしていませんか?
私はなぜリストの "++"が良い方法ではないか知りたいですか?詳細説明を教えてください。 – BlackMamba
リスト内の最後のノードは、「次の」ノードへのNULL参照を持ちます(最後のノードには存在しません)。2つのリストが結合されている場合、リストの最後のノードの1つは、 2番目のリストのErlangではデータが不変なので、新しい最後のノードを作成して、他のリストの開始点を指すようにする必要があります。次に、最後から2番目のノードは、新しい「最後の」ノードを指し示さなければならない。要約すると: 'a ++ b'では、' a'を 'b'の前に完全にコピーする必要があります。元の 'a'はまったく変更されていません。 – RichN