Следует ли повторно связывать "переменные" без знаков с ограничениями числового типа?

я понимаю, Насколькоесть ли цель или преимущество в запрете повторной привязки переменных без сигил?был объявлен символ без сигилы, и его невозможно отскочить. Цитата из этого ответа:

Да, [текущее поведение] определенно задумано, и - как и большинство вещей в дизайне [Raku] - так по нескольким причинам ... Было решено сделать символ без знаков синтаксисом "статического единственного назначения" ... . Для этого были разные причины, в том числе… повышение читабельности программы за счет наличия формы, позволяющей читателю знать, что символ никогда не вернется к новому значению.

(курсив мой.)

Учитывая это, я был очень удивлен, увидев приведенный ниже код:

      my Int \b = 8;
say "{b*b}"; # OUTPUT: «64»

b := 4;
say "{b*b}"; # OUTPUT: «16»

То есть когда bобъявляются без сигилы , но сIntограничение типа, его можно повторно привязать - в отличие от случая, когда это ограничение типа отсутствует. Это ошибка или это правильно?

Если да, то как это согласуется с соображениями дизайна, упомянутыми в ответе, приведенном выше?

(См. Также эту тему Raku / doc на GitHub, чтобы обсудить это поведение и то, является ли оно преднамеренным.)

1 ответ

Это ошибка.

[ни один язык не должен иногда запрещать повторное связывание переменных без знака в зависимости от того, какой тип указан в объявлении].

Другие вопросы по тегам