文字列が変更可能であると話すとき、これは「変更可能」または「変更可能」という言葉を使用することと同義ですか、それとも「変更可能」のような単純な言葉の代わりにこの専門用語が使用される理由を説明する追加のニュアンスがありますか?
7 に答える
これには「可変」という言葉が適していると思います。
「変更可能」を使用した場合、それはあまり明確ではありません。たとえば、文字列がヒープ割り当て型の場合、「文字列」を変更していると言うと、ヒープ上のデータ (文字列の内容) を変更しているのか、文字列のヒープ ポインターを変更しているのかが明確ではありません。
ただし、「可変」は、文字列の実際のデータが変化していることを示唆しています。変異するのは同根だからだと思います。何かが変化している場合、それは A を見ることから B を見ること (つまり、ポインターの変更) に変化するのではなく、それ自体が変化すること、または (反復的に) 元々なかった何かになることです。
変更可能なオブジェクトは、作成後に変更できるオブジェクトです。ある意味では、「変更可能」と同義です。「ミュータブル」という言葉は、「責任があり、変更または改変される可能性がある」ことを意味します。「変更可能」よりも良いと思います。
- 可変
- 「責任を負い、または変更または改変される可能性があります。」
- 変更可能
- 「~の形や性質をいくらか変える; 部分的に変える;」
逆に
- 不変
- 「不変、不変、不変」
- 変更不可
- 「形、性格、強さを変えることができない」
プログラミングでは、変更可能および変更不可能という用語よりも、変更可能および不変という用語をよく耳にします。しかし、どちらの方法も同じ意味であると言っても過言ではないと思います。
しかし、ローマにいるときは...したがって、より一般的に使用される用語であるため、可変および不変を使用する必要があります(少なくとも私の経験では)。
その選択の理由は?私は義理の母に尋ねました(彼女は言葉が上手です:-)、プログラミング以外の観点からは、「可変」は「変更可能」よりも短いです...私には十分な理由のようです。
はい、ミュータブルとは、作成後に変更できるオブジェクトを指す用語ですが、イミュータブルとは、変更できないオブジェクトを指します。ミュータブルとは文字通り「ミューテーションする能力」を意味し、ミュータブル オブジェクトの動作に完全に適合すると思います。
これは、例としてJavaを使用した可変/不変の非常に簡単な説明です。
ミュータブル
- メモリを再割り当てせずに変更できます
StringBuffer api ドキュメントは、標準の文字列クラスの変更可能なバージョンです
String クラスの標準値を変更するには、メモリを再割り当てする必要があります
変更可能という用語を実際に使用したことはありません。
特に文字列に関しては、変更可能な文字列で、最初の文字を「A」から「B」に変更しても、メモリ内の同じバイトを処理しています。そのうちの 1 つが異なる値を取りました。不変の文字列を使用すると、つまり Java では、元のオブジェクトを変更できないため、メモリ内の新しい場所に新しいオブジェクトが作成されます。
Mutable はそれを説明するのに適切な言葉であり、正確に使用することを困難にする現実世界の意味や解釈が読み込まれないという利点があります。
そして、あなたが話している特定のコンテキストを指摘していないので(したがって、これがスコープクリープである場合はご容赦ください)...
具体的には、.NET の文字列は不変であり、変更可能ではありません。それらが作成されたら、それで終わりです。それらは決して変わりません。変更を試みると、新しい文字列が作成され、古い文字列はガベージ コレクションのために解放されます。