問題タブ [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 投票する
4 に答える
68499 参照

scala - 可変マップから不変マップへの変換

どのようにそれを不変に変換しますか?

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

c++ - 可変メンバーによるboost::シリアル化

boost :: serializationを使用して、可変メンバーにキャッシュされた派生値を含むオブジェクトをシリアル化する「最良の」方法は何ですか?

メンテナンス上の理由から、serialize()を別々のsave()メソッドとload()メソッドに分割することは避けたいと思います。

シリアル化の1つの次善の実装:

これは逆シリアル化の場合を処理しますが、シリアル化の場合、キャッシュされた値は強制終了され、再計算する必要があります。

この場合のベストプラクティスは何ですか?

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

c# - C# IEnumerable が Mutable かどうかを確認するにはどうすればよいですか?

IEnumerable の特定のエントリを更新するメソッドが必要です。バックグラウンドでコレクションのクローンを作成していたため、エントリに対して foreach を実行して値を更新できないことがわかりました。これは、私の IEnumerable がいくつかの LINQ->SQL クエリによって支えられていたためです。

リストを取るメソッドを変更することで、この動作を変更しました。リストは常に可変であるため、メソッドはリスト内の実際のオブジェクトを変更します。List が渡されることを要求するのではなく、使用できる Mutable インターフェイスはありますか?

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

iphone - プロパティ値を更新するmutableCopyWithZone

両方のクラスの変数の値を変更する機能を備えたコピーが必要なクラスがあります。簡単に言えば、これらのクラスは常に相互のクローンであり続ける必要があります。ドキュメントについての私の理解は、これも可変であると宣言されているクラスの浅いコピーを使用してこれを行うことができるということです。浅くコピーすることにより、変数のポインター値が複製され、両方のクラスで完全に一致するようになります。したがって、元の変数を更新すると、コピーも同時に更新されます。これは正しいですか?

以下に示すように、コピーしたいクラスでmutableCopyWithZoneを使用しました。これを機能させるために、NSCopyObjectメソッドとallocWithZoneメソッドの両方を試しました。クラスをコピーすることはできますが、意図したとおりに表示されますが、変数を更新しても、コピーされたクラスの値は変更されません。

infoTextViewsは、非アトミックとして宣言されたプロパティであり、コピーされるクラスのヘッダーファイルに保持されます。それに応じて、NSMutableCopyingプロトコルも実装しました。

どんな助けでも素晴らしいでしょう。

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

user-interface - 関数型言語の GUI バインディングはどのように機能しますか?

彼らは通常、言語の非機能的な側面 (可変変数を含む) を使用しますか? 他の戦略はありますか?それらについて説明していただけますか?

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

guice - 状態を維持しながらGuiceインジェクターを変更(バインディングを追加/削除)するための最良のアプローチ

モジュール内のいくつかのバインディングを再定義または更新して、インジェクターによって使用されることを望んでいます。モジュールは不変であり、バインディングが吸い込まれて注入されると、その定義はすべての実用的な目的で変更できるわけではないことを理解しています。

シングルトンをインジェクターに既に存在させたまま、バインディングを追加/変更/削除したいと思います。プロバイダーを使用することでこの効果を達成できるため、変更は単純なケースです。ただし、キー(バインディング定義)を動的に追加または削除するのは少し注意が必要です。

これが実際に行われるべきか、またはできるかどうかについての考え。

定義を元のシングルトンから新しいものにコピーして、追加/削除バインディングが発生するたびにインジェクターを再作成するのが最善の方法だと思います。既存のシングルトンは、実装タイプなどではなく、toInstanceによって再定義されます。

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

c++ - C++ でのシーケンス コンテナーの柔軟な変更

私は STL イテレータの現在の制限について熟考しており、それを回避するエレガントな方法があるかどうか疑問に思っています。これが私の状況です: シーケンス コンテナーをカプセル化するクラスと、コンテナーの内容を変更するジェネリック メソッドがあります。次に例を示します。

簡潔にするためにいくつかの詳細は省略されていますが、私が検討している主な問題は、ミューテーター ( m() ファンクター呼び出しの ?? ) に何を渡すかです。二次的な問題は、ミューテーターの単純な構成を可能にするために mutate から何を返すかです。1 つの可能性は、イテレータの begin/end ペアを data_、または boost::sub_range に渡す (そして返す) ことです。次に例を示します。

これにより、範囲内のすべての値を否定したり、係数を掛けたりするなど、データに対して必要なことのほとんどを行うことができます。これにより、この (短縮された) バージョンのように、さまざまなミューテーターを連鎖または構成することもできます。

したがって、任意のミューテーターは、たとえば、その入力のサブ範囲を選択して、外側のミューテーターが機能する範囲を制限することができます。これは望ましい機能です。そして、これらすべてのミューテーターはデータをその場で変更できるため、非常に効率的です。

ただし、この構文でできないことは、コンテナーのサイズを変更することです (少なくともベクターでは変更できません)。そのため、要素を挿入または削除するミューテーターは、反復子ベースのインターフェイスでは機能しません。代替インターフェースは、コンテナー全体をミューテーターに渡します。その場合のサブレンジングの処理方法がわかりません。また、一般的で最小限の要件の反復子ベースのソリューションよりも洗練されていないソリューションのようにも感じます。

この制限に対処する方法についてのアイデアをいただければ幸いです。

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

scala - 不変コレクションから可変コレクションへの変換

に変換する最良の方法は何collection.immutable.Setですかcollection.mutable.Set?

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

f# - F#: let mutable と ref の比較

まず、この質問が重複している可能性があることを認めます。私に知らせて。

可変性が必要な状況での一般的な「ベスト プラクティス」とは何なのか、興味があります。F# はこれに対して 2 つの機能を提供しているようです: let mutable「ほとんどの」言語で変数のように機能するバインディングと、ref明示的な逆参照を使用する必要がある参照セル (関数で作成) です。

いずれかが「強制」されるケースが 2つあり<-ます。したがって、これらのケースは非常に明確ですが、これらのシナリオ以外で独自の可変変数を作成するときに何をすべきか知りたいです。あるスタイルが他のスタイルよりも優れている点は何ですか? (おそらく、実装に関するさらなる洞察が役立つでしょう。)ref:=

ありがとう!

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

mutable - XSLT2.0さまざまなループと構造にわたってカウンターと変数を実行する方法

したがって、スコープ外の変数にアクセスできないこと、変数が不変であること、XSLTが機能的であり、必須ではないことなどを知っています。

しかし、グローバルな可変変数では些細なことになるような汎用的なアプローチが必要です(それを言うだけで悪に聞こえます:)。ここに例があります...

また、処理中にいつでもt1やt2などのテンプレートがいくつでも存在する可能性があり、変数を変更して使用するテンプレートが存在する可能性があります。

問題の一部は、値が処理の順序に依存することですが、それは意図的なものであり、それが必要なことです。

私が考えた1つの可能性は、値をパラメーターとしてどこにでも渡すことでした。しかし、問題は、1つのリーフテンプレートでそれを変更する必要があり、その後処理が元に戻ることです...その変更は失われます。テンプレートがパラメータを返す方法がない限り、返されたパラメータを渡すことができますか?汎用の純粋な関数型プログラミング言語を考えると、これを行う方法のようです。再帰的に呼び出しますが、値を「繰り越す」ことができるように、戻り値をさらに呼び出すために使用します。

私はこれが拡張機能を使用して行われるのを見てきました-Javaメソッドなどを呼び出すと、グローバルな可変値を持つことができますが...私は実際にはそのような「チート」をしたくありません。

どんなポインタ、アイデアなども歓迎します。