問題タブ [immutable-collections]
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.
c# - C# System.Numerics.Vector を可変に変更しますか?
System.Numerics.Vector
多くの数学計算を含む C# プロジェクトでの使用を検討しています。このパッケージの主な魅力は、ハードウェア アクセラレーション機能です。ただし、データ構造は不変であると言われていますが、私のシナリオでは、いくつかのベクトルで頻繁に更新されます。Builder
インパッケージのようなものは何もないことがわかったSystem.Collection.Immutable
ので、変更が必要になるたびに新しいベクターを作成するしか方法がありません。これには非常に時間がかかります。
これにどのように対処すればよいですか?または、C# で高速なベクトル計算を行うことができる他のパッケージはありますか?
java - Javaの不変ツリーマップ?
Java での不変のツリー マップの実装を探しています。これにより、同一の部分を共有してコピー オン ライト スタイルの変更が可能になります。したがって、本質的には、ImmutableJSが JavaScript に対して、Java に対して行うこととまったく同じです。
ImmutableJS の仕組みに慣れていない人がいる場合は、Java で次のようにしてほしいと思います。
上記の例でmap2
は、 を格納するツリーの部分をコピーせず、その部分をhello -> world
再利用します。
利用可能なそのような実装はありますか、それとも最初から作成する必要がありますか?
typescript - Redux/ImmutableJS ネストされた状態 + 不変コレクションの複雑さ
最初の Redux (NGRX/Store) プロジェクトの不変性について頭を悩ませようとしています。状態の変更を回避することは非常に困難であることがわかりました。Object.assign({}) と状態の変更エラーと戦った後、Immutable.JS を発見しました。これにより、物事がはるかに簡単になります。
私が金融取引アプリケーションを持っているとしましょう。ロード時にチャートにバーのコレクションを表示する必要があります。毎秒数回、ライブ価格情報に基づいて最後のバーを更新する必要があり、そのたびに新しいバーが追加されます。
そして、これはすべて {1-n} 金融商品 (EURUSD/GBPJPY/Gold/Oil など) に対して発生する必要があります。だから私は私のアプリのこの部分のためにこのモデルを思いつきました:
不変リストを含む不変マップがあることに気付くでしょう。したがって、私の最初の質問は次のとおりです。このように「不変性内の不変性」を行うことに何か意味はありますか? 電話してから
まったく新しい状態を効果的に返すため、このように不変性をネストする必要があるかどうかはわかりません.... ClosedCandlesリストの変更を購読できるようにしたいです。これを不変にすることで、変更を直接観察できるようになりますか? または、これらは「トップ」レベルからのみ検出されます。
私の次の質問は、これについてまったく心配する必要があるかどうかです。不変のコレクションを変更することは非常にコストのかかる操作であることが頭に浮かびました。list.push または map.set を実行すると、内部で実際に何が起こっているかがわかります。不変コレクションで何かを変更する必要があるたびに、配列全体またはマップ内のすべてのアイテムを新しい配列/マップに 1 つずつコピーしていますか? それとも、参照か何かを変更しているだけですか?
これらがどのように実行されるかを簡単に理解できるように、不変コレクションの Big-Oh Complexity に関する公開情報があればいいのですが、どこにも見つかりません。
javascript - ノードの再利用を最大化して、不変ツリーから変更されたツリーを取得する方法
次のようなツリー構造データがあります。
私はAngular 2を使用しています。私の知る限り、入力が変更され、変更検出戦略がonPush
.
ツリー構造の更新を最適化するために (ネストされたレベルでノードを切り替えたり、そのようなノードの属性を変更したりするなど)、Immutableを使用しました。
Immutableは更新プログラムを最適化するのにどのように役立ちますか? Immutableは古いデータからの参照を再利用して、データが変更されるたびに新しいオブジェクトを構築することを読みました。
不変データ構造を効率的に使用して、ネストされたレベルでノードを更新するにはどうすればよいですか?
仮定
keyPath
どのノードにも がありません。- 各ノードには、
id
ツリー データのクエリに使用できる一意のプロパティ値があります (ただし、どのように?)
問題
- ネストされたレベルのどこかでノードを更新するにはどうすればよいですか? そのノードに到達する最も効率的な方法は何ですか?
- 複数のノードを更新するにはどうすればよいですか? APIと聞いたの
withMutations
ですが、他に効率的な方法はありますか?
私のアプローチ
すべてをディープ コピーしてから、新しく構築されたオブジェクトを変更します。
/li>私が実装しようとしているもの:
/li>
2 番目のソリューションでは、下の図のようにノードの再利用を実現したいと考えています。
android - Auto-Value を使用して ImmutableList を設定するには?
Auto-Value を使用して不変リストをセットアップしようとしています。そのようなものを実装することを推奨する公式のユーザーガイドに従いました:
私の実装は次のとおりです。
改造呼び出しの応答として来る MovieList オブジェクトのムービーをループしたいと思います。
上記の Retrofit 呼び出しにより、次のスタック トレースが発生します。
上記の MovieList 抽象クラスで ImmutableList を単純な List に変更すると、Retrofit 呼び出しが機能し、オブジェクトが出力されます。追加する依存関係はありますか?私の ImmutableList はcom.google.common.collect.ImmutableList
今からインポートされました。
MovieList オブジェクトをループできるようにするには、ImmutableList 依存関係をどのようにセットアップすればよいですか?