Мне кажется, вы боретесь с вопросом, что на самом деле означает изменчивое / неизменяемое .Итак, вот простое объяснение:
Во-первых, нам нужен фундамент, на котором будет основано объяснение.
Так что думайте обо всем, что вы программируете как виртуальный объект, что-то, чтосохраняется в памяти компьютера как последовательность двоичных чисел.(Однако не пытайтесь представить это слишком сложно. ^^) Теперь на большинстве компьютерных языков вы не будете работать с этими двоичными числами напрямую, а скорее будете использовать интерпретацию двоичных чисел.
Например, выне думайте о числах, таких как 0x110, 0xaf0278297319 или аналогичных, но вместо этого вы думаете о числах, таких как 6, или строках, таких как «Hello, world».Тем не менее эти числа или строки являются интерпретацией двоичного числа в памяти компьютера.То же самое верно для любого значения переменной.
Короче говоря: Мы не программируем с фактическими значениями, но с интерпретациями фактическогодвоичные значения.
Теперь у нас есть интерпретации, которые не должны изменяться ради логики и других «изящных вещей», в то время как есть интерпретации, которые вполне могут быть изменены.Например, представьте себе симуляцию города, другими словами, программу, в которой много виртуальных объектов, а некоторые из них - дома.Теперь можно ли изменить эти виртуальные объекты (дома) и можно ли считать их одними и теми же домами?Ну, конечно, они могут.Таким образом, они являются изменяемыми: их можно изменять, не становясь «совершенно» другим объектом.
Теперь подумайте о целых числах: это также виртуальные объекты (последовательности двоичных чисел в памяти компьютера).Итак, если мы изменим один из них, например, увеличив значение шесть на одно, это все равно шесть?Ну, конечно, нет.Таким образом, любое целое число является неизменным.
Итак: Если любое изменение в виртуальном объекте означает, что оно фактически становится другим виртуальным объектом, то оно называется неизменным.
Заключительные замечания:
(1) Никогда не путайте свой реальный опыт изменчивости и неизменяемости с программированием на определенном языке:
Каждый язык программированияимеет собственное определение того, какие объекты могут быть приглушены, а какие нет.
Так что, хотя теперь вы можете понять разницу в значении, вам все равно придется изучить фактическую реализацию длякаждый язык программирования.... Действительно, может быть цель языка, где 6 может быть приглушен, чтобы стать 7. С другой стороны, это может быть довольно сумасшедший или интересный материал, например симуляции параллельных вселенных. ^^
(2) Это объяснение не является научным, оно призвано помочь вам понять разницу между изменчивым и неизменным.