parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

простые модификаторы доступа

fg 03.09.2006 12:41

По просьбе нового программиста сделал что-то подобное:
^define[var;value] - не позволяет изменять новую переменную
^private[var;value] - не позволяет изменять новую переменную вне класса.
Вопрос: почему возможно менять ключи и значения хеша, переданного в качестве var? При явном задании свойств такого нет.
@define[var;value][tmp]
$tmp[^math:uid64[]]
$caller.self.$tmp[$value]
^process[$caller.self]{@GET_${var}[]
^$result[^$self.$tmp]
}
^process[$caller.self]{@SET_${var}[value]
#do nothing
}
@private[var;value][tmp;t2]
$tmp[^math:uid64[]] $t2[u$tmp]
$caller.self.$tmp[$value]
$caller.self.$t2(1)
^process[$caller.self]{@GET_${var}[]
^$result[^$self.$tmp]
}
^process[$caller.self]{@SET_${var}[value]
^^if(def ^$caller.self.$t2){^$self.${tmp}[^$value]}
}
+ есть ощущение, что @private можно сделать изящнее. У контекстов есть строковый эквивалент?