問題タブ [mutable]

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 投票する
1 に答える
329 参照

c# - プロパティと変数の違い

このコードは完全に機能します。

同時に、これはコンパイルエラーを引き起こします(「変数ではないため、pの戻り値を変更できません」):


違いは何ですか?

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

python - 内部で自己を再インスタンス化する機能を持つ Python サブクラスのタプル オブジェクト

Python の可変オブジェクトと不変オブジェクトの概念を理解しています。問題ありません。不変オブジェクトの固有値を直接変更することはできませんが、不変オブジェクトのインスタンスは別の値で再インスタンス化できます。私がやりたいのは、制御された方法で独自の値を再割り当てできるタプルのサブクラスに内部関数を構築することです。これは、私が見つけられないように見える基本的な機能である可能性があり、助けていただければ幸いです。

たとえば、これが私ができるようにしたいことですが、これは明らかに機能しません。

以下の結果で...

このサイトでこのような質問に対する多数の回答を読んだことから、「なぜこれをやりたいのですか?」と答える傾向がある人もいると思います。しかし、実際にそうである場合は、おそらく「絶対にできない、どうやってもできない」など、より直接的な回答で応答スペースを節約しましょう。

どうもありがとうございました!

編集、以下の回答をありがとう、これが私が最終的に得たものです...

あなたが見ることができる上記の改善/調整は投稿してください. AttributeError 発生の重複を組み合わせることができるようですか?

0 投票する
7 に答える
63795 参照

java - JavaにはInteger、Float、Double、Longの可変型がありますか?

Integer などの変更可能なバージョンを使用したい状況にあります。これらのクラス (以下) を使用する必要がありますか、それとも Java には何かが組み込まれていますか?

http://www.java2s.com/Code/Java/Data-Type/Amutableintwrapper.htm

0 投票する
5 に答える
9170 参照

scala - Scalaに変更可能なTreeMapがないのはなぜですか?

時間の不足、技術的な問題、それとも存在してはならない理由があるのでしょうか。

0 投票する
5 に答える
10952 参照

java - 可変オブジェクトでのvolatileキーワードの使用

volatileJavaでは、キーワードが変数の可視性を提供することを理解しています。問題は、変数が可変オブジェクトへの参照である場合、volatileそのオブジェクト内のメンバーにも可視性を提供するかどうかです。

volatile Mutable m以下の例では、複数のスレッドがアクセスして変更している場合、正しく機能しvalueますか?

0 投票する
4 に答える
1120 参照

.net - usingステートメント内のクロージャー内で可変構造体変数をキャプチャすると、ローカルの動作が変わるのはなぜですか?

更新:まあ、今私は行ってそれをしました:私はそれが正しい振る舞いであると真剣に疑っているので、これについてマイクロソフトにバグレポートを提出しました。とはいえ、この質問に関して何を信じるべきかはまだ100%わかりません。ですから、「正しい」ものはある程度の解釈に開かれていることがわかります。

私の考えでは、Microsoftはこれがバグであることを受け入れるか、usingステートメント内の可変値型変数の変更が未定義の動作を構成すると応答します。

また、その価値については、少なくともここで何が起こっているのかについては推測できます。コンパイラがクロージャのクラスを生成し、ローカル変数をそのクラスのインスタンスフィールドに「リフト」しているのではないかと思います。usingブロック内にあるので、フィールドを作成していますreadonlyLukeHが他の質問へのコメントで指摘したように、これにより、フィールド自体の変更などのメソッド呼び出しが防止さMoveNextれます(代わりにコピーに影響します)。


注:読みやすさのためにこの質問を短くしましたが、まだ正確に短いわけではありません。元の(長い)質問全体については、編集履歴を参照してください。

ECMA-334の関連セクションであると私が信じていることを読み通しましたが、この質問に対する決定的な答えを見つけることができないようです。私は最初に質問を述べ、次に興味のある人のためにいくつかの追加のコメントへのリンクを提供します。

質問

を実装する可変値型がある場合は、IDisposable(1)usingステートメント内のローカル変数の値の状態を変更するメソッドを呼び出すことができ、コードは期待どおりに動作します。ただし、ステートメント内のクロージャusingで問題の変数をキャプチャすると、(2)値への変更はローカルスコープに表示されなくなります。

この動作は、変数がクロージャー内およびusingステートメント内でキャプチャされた場合にのみ明らかになります。using1つ( )または他の条件(閉鎖)のみが存在する場合は明らかではありません。

ステートメント内のクロージャー内で可変値型の変数をキャプチャすると、usingそのローカル動作が変わるのはなぜですか?

以下は、項目1と2を示すコード例です。どちらの例も、次のデモンストレーションMutable値タイプを利用します。

1.usingブロック内の値型変数の変更

出力コードは以下を出力します:

using2.ブロック内のクロージャ内の値型変数をキャプチャする

上記のコードは次のように出力します。

さらなるコメント

Monoコンパイラは、私が期待する動作を提供することに注意してください(ローカル変数の値への変更は、using+クロージャの場合でも表示されます)。この振る舞いが正しいかどうかは私にはわかりません。

この問題に関する私の考えの詳細については、こちらを参照してください。

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

python - MutableString が Python で廃止されたのはなぜですか?

Python 2.6 でMutableStringクラスが廃止されたのはなぜですか。
なぜPython 3で削除されたのですか?

0 投票する
4 に答える
406 参照

c# - usingステートメント内から値型を変更することは未定義の動作ですか?

これは本当にこの質問の派生物ですが、それはそれ自身の答えに値すると思います。

ECMA-334のセクション15.13によると(usingステートメントでは、以下ではリソース取得と呼ばれます):

リソース取得で宣言されたローカル変数 は読み取り専用であり、初期化子を含める必要があります。++埋め込みステートメントがこれらのローカル変数を(代入またはand演算子を介して)変更しようとしたり、または パラメーター--として渡したりしようとすると、コンパイル時エラーが発生します。refout

これは、以下のコードが違法である理由を説明しているようです。

しかし、これはどうですか?

上記のスニペットはC#で未定義および/または違法ですか?それが合法である場合、このコードと上記の仕様からの抜粋との関係は何ですか?それが違法である場合、なぜそれが機能するのですか?それを可能にする微妙な抜け穴がありますか、それとも単なる運に起因するだけで機能するという事実がありますか(そのため、そのような一見無害に見えるコードの機能に依存するべきではありません)?

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

python - 可変型と不変型のチャート

Pythonでどのタイプ(組み込み)が可変および不変であるかを示す表またはチャートがオンラインのどこかにありますか?

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

f# - 変更可能なフィールドを持つ F# + レコードでの等価性の推論

一般的な等価/比較メンバーの設計ガイドラインは、可変参照型に構造的等価性を実装しないことですが、可変フィールドを持つ F# レコード型を見てください。

Map内部でソートされmutableますが、レコード インスタンスが既にマップ内にある場合でも、レコード フィールドを使用すると順序を変更できます。これは非常に悪いことです。

F# は、変更可能なフィールドを宣言する F# レコード型に対してモードを推論する必要がある[<NoEquality>]と思いますね。[<NoComparison>]