Следует ли повторно связывать "переменные" без знаков с ограничениями числового типа?
я понимаю, Насколькоесть ли цель или преимущество в запрете повторной привязки переменных без сигил?был объявлен символ без сигилы, и его невозможно отскочить. Цитата из этого ответа:
Да, [текущее поведение] определенно задумано, и - как и большинство вещей в дизайне [Raku] - так по нескольким причинам ... Было решено сделать символ без знаков синтаксисом "статического единственного назначения" ... . Для этого были разные причины, в том числе… повышение читабельности программы за счет наличия формы, позволяющей читателю знать, что символ никогда не вернется к новому значению.
(курсив мой.)
Учитывая это, я был очень удивлен, увидев приведенный ниже код:
my Int \b = 8;
say "{b*b}"; # OUTPUT: «64»
b := 4;
say "{b*b}"; # OUTPUT: «16»
То есть когда
b
объявляются без сигилы , но сInt
ограничение типа, его можно повторно привязать - в отличие от случая, когда это ограничение типа отсутствует. Это ошибка или это правильно?
Если да, то как это согласуется с соображениями дизайна, упомянутыми в ответе, приведенном выше?
(См. Также эту тему Raku / doc на GitHub, чтобы обсудить это поведение и то, является ли оно преднамеренным.)
1 ответ
Это ошибка.
[ни один язык не должен иногда запрещать повторное связывание переменных без знака в зависимости от того, какой тип указан в объявлении].