Я часто бачив терміни immutable
і const
користувався взаємозамінно. Однак, з мого (невеликого) досвіду, вони сильно відрізняються в «контракті», який вони складають у коді:
Immutable укладає договір про те, що цей об'єкт не змінюватиметься взагалі (наприклад, кортежі Python, рядки Java).
Const укладає договір про те, що в межах цієї змінної він не буде змінений (нічого не обіцяйте щодо того, що інші потоки можуть зробити для об'єкта, на який вказується протягом цього періоду, наприклад, ключового слова C / C ++).
Очевидно, що два не є рівнозначними, якщо мова не є однопоточною (PHP) або не має лінійної або унікальної системи набору тексту (Clean, Mercury, ATS).
По-перше, чи моє розуміння цих двох понять правильне?
По-друге, якщо є різниця, чому вони майже виключно використовуються як взаємозамінні?
const
не існує в кожній мові, і незмінність та незмінність не існує в кожній мові, тому зробити цю агоністичну мову не застосовується. Мова специфічна лише там, де ці поняття застосовуються.