Оператор переопределения(ещё раз о мутабельности переменных :)
От: C.A.B LinkedIn
Дата: 10.04.13 11:22
Оценка:
Несомненно вам известно о пользе изменяемых переменных:
   i = 0
   while(i < /*some size*/){
     //do something...
     i += 1}

и об их опасности:
   i = 0
   while(i < /*some size*/){
     //high code...
       //copypaste
       i = 0                     
       while(i < /*some size*/){ 
         //do something...       
         i += 1}                 
     //high code...
     i += 1}

Чтобы сделать программирование безопаснее, авторы некоторых языков разделяют переменные на изменяемы и не изменяемые (постоянные переменные ):
   var i = 0
   val j = 0
   i = 1
   j = 1 //<<error

Однако, ИМХО, такой подход не очень эффективен, так как, хоть изменяемых переменных и становится меньше они всё равно остаются.

Но, что если сделать все переменные "почти" неизменяемыми и добавить оператор для их изменения? Т.е. переменные могут быть изменены только одним специальным оператором:
   i = 0   //definition variable
   i := 1  //change variable
   i = 0   //<<error: "i" already defined
   j := 1  //<<error: "j" not defined

Пример:
   i = 0
   while(i < /*some size*/){
     //high code...
       //copypaste
       i = 0                     //<<error             
       while(i < /*some size*/){ 
         //do something...       
         i +:= 1}                 
     //high code...
     i +:= 1}


Что думаете? Хотели ли бы вы такую фичу в вашем ЯП?
Спасибо.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.