問題タブ [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.
collections - += Scala 2.7.7 ではスタックに追加します。:+ Scala 2.8.0 では動作しないようです
Scala 2.7.7 を使用すると、これは期待どおりに機能します。
Scala 2.8.0 に変更した後、+= を :+ に置き換える必要があります。ただし、これはスタックに追加されません: java.util.NoSuchElementException: head of empty list.
私は何か基本的なことを見落としていますか?
c++ - const_castなしで*thisを変更するConstメソッド
私が書いているプログラムでは、次のパターンが発生しています。あまり工夫されていないことを願っていますが、const_castなどを使用せずFoo
に、constメソッドでオブジェクトを変更することができます。Foo::Questionable() const
基本的に、Foo
への参照を格納しFooOwner
、その逆も同様です。では、所有者を呼び出すことによりQuestionable()
、Foo
constメソッドでそれ自体を変更することができます。mutate_foo()
質問はコードに従います。
これは定義された動作ですか?Foo::data
可変と宣言する必要がありますか?それとも、これは私が致命的に間違ったことをしている兆候ですか?要求されたときにのみ設定される一種の遅延初期化された「データ」を実装しようとしています。次のコードは警告なしで正常にコンパイルされるため、UBランドにいるので少し緊張しています。
編集:const
on Questionable()は、直接のメンバーをconstにするだけで、オブジェクトによってポイントまたは参照されるオブジェクトは作成しません。これはコードを合法にしますか?Questionable()
、this
がタイプconst Foo*
を持っているという事実と、コールスタックのさらに下にある、FooOwner
を変更するために使用する非定数ポインタを合法的に持っているという事実の間で混乱していますFoo
。Foo
これは、オブジェクトを変更できるかどうかを意味しますか?
編集2:おそらくもっと簡単な例:
c - 引数を収集するための Bison 文法
関数の引数を収集するためのバイソン文法があります。これまでのところは次のとおりです。
Bison で通常の C 配列のように使用できる、固定長のない整数の配列を作成するにはどうすればよいですか?
python - python:groupdict()によって返される辞書の変更
標準ライブラリオブジェクトのメソッドによって返される可変オブジェクトを変更しても安全ですか?
これが1つの特定の例です。しかし、可能であれば一般的な答えを探しています。
このコードは安全ですか?groupdict()を変更することで、オブジェクトmが破損しているのではないかと心配しています(これは後で必要になります)。
これをテストしましたが、その後m.groupdict()を呼び出すと、元の辞書が返されました。しかし、私が知っているすべてのことは、これは実装に依存する可能性があるということです。
java - 可変オブジェクトを持つ Java コレクション
オブジェクトが可変の場合、TreeSet、HashSet、または LinkedHashSet はどのように動作しますか? それらが何らかの意味で機能するとは想像できませんか?
オブジェクトを追加した後に変更した場合。リストの動作は何ですか?
リンクされたリストまたは配列以外の変更可能なオブジェクトのコレクション(ソート/インデックス/などに必要)を処理し、それらを毎回単純に反復処理するためのより良いオプションはありますか?
android - 可変ビットマップへのリソースのロード
私は次のようなリソースからビットマップをロードしています:
私がやりたいのは、drawメソッドでメインキャンバスに描画される前にビットマップにいくつかの変更を加えることです(変更されないときにメインループで多くの描画を繰り返すのは無駄に思えるので)。私は次のようにビットマップに変更を加えています:
だから当然私は例外を得る
それを避けるために、ビットマップのコピーを作成して変更可能にしました
問題を回避しますが、OutOfMemoryExceptionsが発生することがありますが、私が望むことを達成するためのより良い方法を知っていますか?
scala - Scalaで可変ハッシュマップ要素を更新するにはどうすればよいですか?
私はこれに非常に似た関数を書きました:
実際のコードでは、タイプAとBは列挙型であり、Cはケースクラスです。myMutableHashMapは、関数と同じクラス内val
のタイプとして定義されています。scala.collection.mutable.HashMap[(TypeA, TypeB), TypeC]
writeMyEl
Scala(2.8)コンパイラは次のように述べています。
私は何が間違っているのですか?
iphone - NSMutableAttributedString の内容をクリアするにはどうすればよいですか?
オブジェクトの初期化で割り当て初期化された ivar があります。
ループで、attString の内容をクリアして再利用したい。どうすればいいですか?
ありがとう!
c# - 外部コードの観点から不変の可変構造体はどうですか?
更新:この質問を投稿した後、このアイデアの主な欠点は、そのような型が不適切に使用されやすいということです。つまり、利益を引き出すには、型を特定の方法で使用する必要があります。私が最初に念頭に置いていたのは、次のように使用されるものでした(SquareRootStruct
一貫性のために元の質問の例に固執します):
したがって、これがどれほど簡単に間違いを犯すかを考えると、これはクラスとしてより理にかなっているというリードの (彼のコメントでの) 正しい可能性があると考える傾向があります。
次の特性を持ちstruct
たいとします。
- 外部の観点から不変
- 初期化が早い
- 特定のプロパティの遅延計算 (およびキャッシュ)
明らかに、3 番目の特性はmutabilityを意味しますが、これが悪いことであることは誰もが知っています (「変更可能な値の型を作成しないでください!」というマントラが十分に頭にドリルされていると仮定します)。しかし、変更可能な部分が型自体の内部でのみ可視であり、外部コードの観点からは値が常に同じである限り、これは受け入れられるように思えます。
これが私が話していることの例です:
さて、明らかにこれは些細な例でMath.Sqrt
あり、この場合、このアプローチが価値があると考えるほどコストがかからないことはほぼ確実です。これは説明のための例にすぎません。
しかし、私の考えでは、これにより、最も明白な代替アプローチでは実現できない私の 3 つの目的が達成されると思います。具体的には:
- 型のコンストラクターで計算を実行できます。しかし、これは上記の 2 番目の目的 (初期化が速い) には及ばない可能性があります。
- すべてのプロパティ アクセスに対して計算を実行できました。しかし、これは上記の 3 番目の目的 (将来のアクセスのために計算結果をキャッシュする) には及ばない可能性があります。
そうです、このアイデアは、内部的に変更可能な値型に効果的につながります。しかし、外部コードからわかる限り (私が見た限りでは)、それは不変に見えますが、パフォーマンス上の利点もあります (繰り返しますが、上記の例はこのアイデアの適切な使用法ではないことに気付きました。私が話している利点は、実際にキャッシングを正当化するのに十分なコストがかかる計算に依存します)。
私は何かを見逃していますか、それともこれは実際に価値のあるアイデアですか?
python - Python: リストのリスト内の要素を置き換える (#2)
私のものと同じタイトルの以前の質問が投稿されましたが、同じ質問 (だと思います) が、コードに他の問題がありました。そのケースが私のケースと同一であるかどうかを判断できませんでした.
とにかく、リスト内の要素をリストに置き換えたい。コード:
私は今期待しています:
しかし、私は得る:
なんで?
これは、コマンド ラインで複製されます。Python 3.1.2 (r312:79147、2010 年 4 月 15 日、15:35:48) [GCC 4.4.3] on linux2