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

reference - RefCell でのborrow_mutの違いと RefCell<&X>

私が正しく理解した場合、Rust でaを介して変更可能な借用を作成することはできません。 orを使用する必要があります。しかし、とにかく私はそれらを使用する方法を理解できません。たとえば、次の簡単な例を考えてみましょう。std::rc::RcCellRefCell

次のエラーが表示されます。

しかし、行から参照を削除した場合 (および のタイプを更新した場合mutx):

すべて順調。RefMut::deref_mut() -> &mut Tしかし、 16 行目で呼び出された deference&&mut Tは最初のケースでは返され、2 番目のケースでは返されるはずなので、その理由がわかりません&mut T。しかし、コンパイラは必要に応じて多くを適用する必要があるため ( deref 強制*がどのように機能するかがわかれば)、 と の間に違いはないはずです。RefMut<X>::deref_mut()RefMut<&X>::deref_mut()

編集mut:リンクされた例が正しく書かれているので、間違って15行目に書くのを忘れました。だから今はlet mut mutx...

0 投票する
0 に答える
169 参照

string - Is it possible to mutate a string in Swift such that it can be proven to modify the original value?

Start with the claim that Swift makes that strings are 'mutable', Are Swift "mutable" strings really mutable, or are they just like Java strings?, but proceeding with a generally-accepted (and non-Swift) definition of mutability - ie. strictly value immutability, without consideration of bindings

Is it possible to actually mutate a String value such that this prints 'true'?

#xA;

I am not interested in 'structure types' or delayed copy semantics. This question is about if a string value can be modified, from within Swift - although it would be also be interesting to see if such could be mutated by other .. devious means. (If not it is hogwash to even bother discussing value vs reference types instead of pure mutability considerations.)

I am aware of "mutating" methods but disagree with those as 'mutating' the string value. In the example above, let should be substitutable in the final program. If let cannot be substituted; or the object can otherwise not be proven to be the same, then mutability has not been shown.

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

c++ - メンバー関数はオブジェクトをメインから変更しますが、他の関数からは変更しません

リンクリストクラスをlist内部で使用する Stack クラスがあります。メイン関数では、push および pop メンバー関数が指定されたスタックを正常に変更します。スタックを取り、それに対していくつかの操作を実行する別の関数を作成しました。内部的には、プッシュとポップを使用します。奇妙なことに、この関数内で変更されているように見えますが、実行後、スタックは変更されません。コードの一部を提供します (必要に応じてさらに追加できます)。

...それから主に:

その結果:

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

python - リストの要素を変更すると派生リストに影響する/影響しない

Python のリストでの次の異常な動作がわかりません。誰かが光を当てることができれば幸いです。

スニペット 1:

出力:

myList の要素操作から A を「シールド」する追加のコピー関数を実行しなかったので、これは私には理にかなっています。

スニペット 2:

出力:

myList への変更が A に反映されないのはなぜですか?

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

rust - 借用したオブジェクトを一時的に保持するには

構造Parent体フィールドには以下を格納する必要がありますOption:

fn main()を呼び出すまで、 でオブジェクトを操作する可能性を一時的にブロックする必要があります。.unbind()

0 投票する
0 に答える
26 参照

python - 同じ値を持つ異なる文字列変数は同じメモリ位置を持っています python

うまくいけば、ここの誰かがこの問題を解決してくれます。金曜日に 1 年生のプログラミング試験の修正を行っているのですが、混乱する事態に遭遇しました。

可変性について説明している私の講義スライドには、私にとってはうまくいかない特定の部分があります。例は次のとおりです。

しかし、これをプログラムに入力すると、代わりに True が返されます。また、それらの ID は同一です。a == b印刷すると が返されると思いますが、個々の変数であるためTrue、そうaではありません。b

これは昨年の試験の問題でもあったので、これを理解するのに役立ちます。

この問題に関するヘルプは大歓迎です。

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

f# - F# の可変性を理解する: ケース スタディ

私は F# の初心者で、本格的なプログラミングを初めて試みました。コードが少し長くて申し訳ありませんが、理解できない可変性の問題がいくつかあります。

これは、無向グラフ コンポーネントの最小カットを計算する Karger MinCut アルゴリズムの実装です。詳細については、ここではアルゴリズムの仕組みについては説明しませんhttps://en.wikipedia.org/wiki/Karger%27s_algorithm 重要なのは、ランダム化されたアルゴリズムであり、決められた回数の試行を実行し、 「最高の」走り。

ランダム試行ごとに特定の関数を作成すれば、以下の多くの問題を回避できることがわかりましたが、以下の実装の何が問題なのかを正確に理解したいと思います。

この単純なグラフでコードを実行しています (グラフを 2 つのコンポーネント (1,2,3,4) と (5,6,7,8) に分割し、これら 2 つのコンポーネントの間に 2 つのエッジしかない場合、最小カットは 2 です) )

ファイルsimplegraph.txtはこのグラフを次のようにエンコードする必要があります (最初の列 = ノード番号、他の列 = リンク)

このコードはまだ命令型プログラミングのように見えるかもしれませんが、申し訳ありません。

そのため、各試行を呼び出すメインの for i ループがあります。最初の実行 (i=1 の場合) はスムーズで完璧に見えますが、i=2 の場合は実行時エラーが発生します。これは、WG などの変数が正しく再初期化されず、範囲外のエラーが発生するように見えるためです。

WG、WG1、および WGmin はtype wgraphobj、ディクショナリオブジェクト のレコードであり、 WG1 はメイン ループの外側で定義され、WG1 に新しい割り当てを行いません。 [しかし、残念ながら、そのタイプは変更可能です]

私は指示で最初のWGを定義しました

次に for i ループの最初に、次のように書きます。

その後、試行ごとに WG オブジェクトを変更して計算を行います。試用が終了し、次の試用に進むとき (i が増加) WG を WG1 のような初期状態にリセットしたい。しかし、それは機能していないようで、理由がわかりません...

ここに完全なコードがあります

MyModule.fs [一部実行に不要な機能]

Karger.fs

アルゴリズムの説明: (私の問題を解決するのにそれほど重要ではないと思います)

各試行で、いくつかの手順があります。各ステップで、2 つのノードを 1 つにマージし (実質的に 1 つを削除)、グラフを更新します。これを 6 回繰り返して、残りのノードが 2 つになるまで (2 つのクラスターとして定義します)、これら 2 つのクラスター間のクロス エッジの数を調べます。「運が良ければ」これらの 2 つのクラスターは (1,2,3,4) と (5,6,7,8) になり、適切な数のカットが見つかります。各ステップで、オブジェクト WG が更新され、LiveNode (2 つのノードをマージした結果として除去されないもの) のみを使用して 2 つのノードをマージする効果が完全に最新に保たれます。

WG.Graph は更新されたグラフです

WG.Label には、現在のノードにマージされたノードのラベルが含まれています

WG.LabelHead には、そのノードがマージされたノードのラベルが含まれます

WG.RemoveTable は、ノードが削除されたかどうかを示します。

見てくださる方、よろしくお願いします!