ความแตกต่างระหว่างไม่เปลี่ยนรูปและ const
ฉันมักจะเห็นคำศัพท์immutableและconstใช้สลับกันได้ อย่างไรก็ตามจากประสบการณ์ (เล็กน้อย) ของฉันทั้งสองต่างกันมากใน 'สัญญา' ที่พวกเขาทำในรหัส: ไม่เปลี่ยนรูปทำให้สัญญาที่วัตถุนี้จะไม่เปลี่ยนแปลงใด ๆ (เช่น Python tuples, สตริง Java) Const ทำสัญญาที่อยู่ในขอบเขตของตัวแปรนี้มันจะไม่ถูกแก้ไข (ไม่มีสัญญาใด ๆ เกี่ยวกับสิ่งที่เธรดอื่น ๆ อาจทำกับวัตถุที่ชี้ไปในช่วงเวลานี้เช่นคีย์เวิร์ด C / C ++) เห็นได้ชัดว่าทั้งสองไม่เทียบเท่ากันยกเว้นภาษานั้นเป็นแบบเธรดเดียว (PHP) หรือมีทั้งระบบการพิมพ์เชิงเส้นหรือแบบ uniquness (Clean, Mercury, ATS) ครั้งแรกฉันเข้าใจแนวคิดทั้งสองนี้ถูกต้องหรือไม่ ประการที่สองหากมีความแตกต่างทำไมพวกเขาเกือบใช้เฉพาะแทนกันได้?