問題タブ [mutability]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
43 参照

python - Python関数は2つのリストを取得しましたが、変更は1つだけです

Lista1 は変更されるのに Lista2 は変更されないのはなぜですか? リストを直接変更するメソッドはどれですか?

0 投票する
1 に答える
3427 参照

swift - Swift: タプルを可変変数と不変変数に同時にアンパックする

2 つの値のタプルを返す Swift 関数があります。最初の値は、常にではありませんが、通常、呼び出し元の変更可能な状態の一部の「更新された」バージョンとして使用されることを意図しています (inoutタプルの代わりにこれを使用することもできますが、それはそれをより面倒にします新しい状態を維持しながら古い状態を維持します)。2 番目の値は、通常、関数によって生成される不変の戻り値であり、既存の変更可能な状態をオーバーライドすることは意図されていません。

概念的には、使用法は次のようになります。

ここでの問題は、明らかに、retval1retval2、およびretval3が宣言されておらず、コンパイラが怒ることです。

stateである必要があり、var再宣言してはならないので、書くことはできません

ただし、は変更されることはなく、ベスト プラクティスと適切なコーディング スタイルの問題としてretvalで宣言する必要があります。let

次の構文が機能することを期待していましたが、機能しません。

このタプルを解凍/分解するにはどうすればよいですか?

0 投票する
1 に答える
3781 参照

rust - メンバー関数から呼び出されたクロージャで自己を変更するにはどうすればよいですか?

正当なチェスの動きを計算しようとしていますが、借用チェッカーを満たすのに問題があります。これらのメソッドを実装する構造体がありChessます (重要でないコードは に置き換えられます...):

まだ借りている間にクロージャー内get_legal_movesを変更しているため、コンパイルエラーが発生します。selfget_movesself

解決しようとしている問題を示す簡単な例を作成しました。

遊び場

エラー:

コードがコンパイルできるように借用チェッカーを満たすにはどうすればよいですか?

0 投票する
2 に答える
444 参照

python - 可変定数は安全ですか?

リストである定数、またはその他の変更可能なオブジェクトを持つことに関連する「落とし穴」のようなものはありますか?

現在、私のコンテキストは、呼び出しに渡される定数と関係がありますが、トピックが質問に意味のある影響を与えるとは思わないため、一般的に質問します。

次のコード例を検討してください。

私がこれを尋ねるのは、関数定義の変更可能なオブジェクトから生じる問題を致命的に認識しているからです。そして、尊敬される定数への代入や突然変異を行うことは決してあってはならないことを私は理解しています。そして、その「定数」は実際には問題ではありません。私は尋ね、さらに尋ねます。偶発的な突然変異ではなく、意味的に自分自身を保護するためのいくつかの規則があるのでしょうか?

0 投票する
1 に答える
596 参照

swift - swift: 辞書をその場で変更します

内容が任意のタイプ(辞書、配列、文​​字列など)のjsonオブジェクトを取り、タイプに基づいてオブジェクトを変更する関数があります。

以下の不自然な関数「foo」の例では、辞書を適切に変更するにはどうすればよいですか? コンパイラ エラーが発生します。

ここに関数があります

0 投票する
1 に答える
301 参照

python - globals() と locals() の可変性

Python ではglobals()、グローバル シンボル テーブルlocals()の表現を返し、ローカル ステートの表現を返します。どちらもディクショナリを返しますが、への変更globals()はグローバル シンボル テーブルに反映されますが、への変更locals()は効果がありません。

これはなぜですか?

0 投票する
2 に答える
850 参照

javascript - javascriptでの引数のスコープとオブジェクトの可変性

JavaScript のスコープと可変性について学ぶために、次のダミーの割り当てが与えられました。

この演習では、reverseArray と reverseArrayInPlace の 2 つの関数を記述します。最初の reverseArray は、配列を引数として取り、同じ要素を逆の順序で持つ新しい配列を生成します。2 番目の reverseArrayInPlace は、reverse メソッドと同じことを行います。要素を逆にするために、引数として指定された配列を変更します。どちらも、標準のリバース メソッドを使用することはできません。

私は reverseArray 関数のコーディングに成功し、reverseArrayInPlace 関数に再利用したいと考えました。私は関数の 3 つのバージョンをコーディングしましたが、一部が機能し、一部が機能しない理由が本当にわかりません。この JavaScript の動作についてご説明いただければ幸いです。(reverseArrayInPlace を解決する他の方法があることは知っていますが、私のアプローチが機能しない理由を知りたいです)。