具有类型约束的无符号“变量”是否可以重新绑定? [复制]

2024-03-07

[EDIT:关闭以支持https://stackoverflow.com/questions/69231506/what-are-the-rules-for-re-binding,这是我在更清楚地理解我在这个问题中想问的内容后制定的。]

我的理解来自禁止无符号变量重新绑定是否有目的或好处? https://stackoverflow.com/questions/50399784/is-there-a-purpose-or-benefit-in-prohibiting-sigilless-variables-from-rebinding/50401989#50401989是一个没有印记的符号可以never会反弹。引用那个答案:

是的,[当前的行为]当然是设计使然,而且 - 就像 [Raku] 设计中的大多数东西一样 - 这样做的原因不止一个......我们决定使无印记符号形成一种“静态单一赋值”语法...... 。造成这种情况的原因有很多,包括……通过增加程序的可读性来增强程序的可读性。让读者知道符号永远不会反弹到新值的形式

(强调已添加。)

鉴于此,我非常惊讶地看到下面的代码:

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

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

也就是说,当b声明时没有印记,但是with an Int类型约束,它可以反弹——与缺乏类型约束时不同。这种行为是错误还是正确的?

如果是,它如何符合上面链接的答案中提到的设计考虑因素?

(也可以看看这个 Raku/doc 问题线程 https://github.com/Raku/doc/issues/3950#issuecomment-912726932在 GitHub 上讨论此行为及其是否是故意的。)


这是一个错误。

[任何语言都不应该有时禁止无符号变量重新绑定,具体取决于声明中是否指定了类型或类型]。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有类型约束的无符号“变量”是否可以重新绑定? [复制] 的相关文章

随机推荐

  • Matplotlib 用线条和图形注释条形图的方法[重复]

    这个问题在这里已经有答案了 我想为条形图创建注释 将条形图的值与两个参考值进行比较 如图所示的叠加 一种工作人员仪表 是可能的 但我愿意接受更优雅的解决方案 条形图是用以下命令生成的pandas API to matplotlib e g
  • 在文件流中向后退一位

    假设我有一个像这样的文件指针 file ptr fopen test txt r 我想改变每一个char当我在流中移动时的 ASCII 值 我将其作为密码执行 因此如果有更好或更有效的方法来执行此操作 请告诉我 我正在尝试使用while f
  • 快速、objective-c 协议实施

    仍在尝试习惯swift 但由于我的obj c知识接近0 所以我一直无法实现这个SocketRocket协议 任何帮助将不胜感激 这是我尝试实现的 obj c 委托 protocol SRWebSocketDelegate
  • yylineno 在 yacc 文件中始终具有相同的值[重复]

    这个问题在这里已经有答案了 对于编译器中的一个项目 我在语法分析器中遇到一个问题 当我在符号表中添加符号时 我在 yylineno 中始终采用相同的值 我一开始就是这样做的 int yylex void int yyerror char y
  • 从 C、GCC(裸机)调用 ARM 汇编

    我正在尝试使用 GCC 在 ARM 中进行一些裸机编程并在 QEMU 上进行测试 每当我从 C 调用 ARM 标签时 我的程序就会挂起 我有一个简单的代码示例 显示了问题https gist github com 1654392 https
  • “这个”级联是如何工作的?

    我有以下类接口 class Time public Time int 0 int 0 int 0 Time setHour int Time setMinute int Time setSecond int private int hour
  • 使用 connect 时出错(react-redux 库的函数)

    我有一个组件类 我正在使用react redux来连接redux存储 但是当我尝试将组件传递到connect函数时出现错误 react default memo 不是一个函数 在 react default memo ConnectFunc
  • CGO:如何在 Golang 中使用指针访问 C 数组中的数据

    我正在使用 FFmpeg 为 Windows 平台编写一个应用程序 它是 golang 包装器 goav 但我无法理解如何使用 C 指针来访问它们指向的数据数组 我试图获取存储在 AVFrame 类中的数据 并使用 Go 将其写入文件 最终
  • 相关非类型模板参数

    考虑下面的类 class Foo enum Flags Bar Baz Bax template
  • 如何在 Java 中配置数据源以连接到 MS SQL Server?

    我正在尝试按照 Java 的 JDBC 教程编写一个可以连接到 SQL Server 2008 的 Java 程序 在建立连接时我迷失了方向 以下片段来自教程 InitialContext ic new InitialContext Dat
  • 如何在 Windows Azure 中连接 2 个虚拟机以实现两层架构?

    如何在 Windows Azure 中创建 2 个连接的虚拟机以便能够部署两层架构解决方案 让我澄清一下这个场景 目前我在 Windows Azure 中使用 1 个虚拟机 其中安装了 SQL Server 2008 DB 和 ASP NE
  • 何时使用动态库与静态库

    在 C 中创建类库时 可以选择动态 dll so 和静态 lib a 图书馆 它们之间有什么区别 什么时候适合使用哪个 静态库会增加二进制文件中代码的大小 它们总是被加载 并且无论您编译的代码版本是什么 都是将运行的代码版本 动态库单独存储
  • 如何从 silverlight 应用程序检测操作系统?

    我有一个 Silverlight3 应用程序 旨在在 Windows 和 Mac OS 环境上运行 我想在运行时知道我的应用程序是在 Windows 还是 Mac 上运行 这样我就可以根据用户在他们选择的操作系统中习惯的方式进行一些调整 例
  • 在 CodeIgniter 2.0 中返回并使用数据库中的多维记录数组

    大家好 好吧 我正在尝试使用 codeigniter 但在我看来 我在尝试检索和显示表中的数据时造成了一些混乱 这是代码片段 我想检索存储在我的文章表中的所有文章 同时我需要从关系表和分别名为articleTagRelation和标签的标签
  • 重新连接 WebSocket 而不创建新实例

    因此 我创建了一个新的 Web 应用程序 它使用 WebSocket 到 Node JS WebSocket 服务器 现在 节点服务器可以完成它需要的一切并且工作完美 我的问题是浏览器的实现 我查看了答案中其他人提供的许多库 但我想看看它们
  • 如何使用LINQ选择对象?

    我的数据看起来像这样 UserId SongId 1 1 1 4 1 12 2 95 我还有以下课程 class SongsForUser public int User public List
  • 滑动菜单未正确显示

    我是一名初学者 Android 程序员 我正在玩弄JFeinstein 很棒的滑动菜单 https github com jfeinstein10 SlidingMenu 试图弄清楚它是如何工作的并在我的应用程序中实现它 但在我的所有实现中
  • 从 ASCII 文件读取文本值到 matlab 变量中

    考虑以下文件 var1 var2 variable3 1 2 3 11 22 33 我想将数字加载到矩阵中 并将列标题加载到变量中 该变量相当于 variable names char var1 var2 variable3 我不介意将名称
  • 我可以将反应组件放入状态中吗?

    找不到任何最近的官方信息是否允许以下 三个选项中的任何一个 constructor props this state item
  • 具有类型约束的无符号“变量”是否可以重新绑定? [复制]

    这个问题在这里已经有答案了 EDIT 关闭以支持https stackoverflow com questions 69231506 what are the rules for re binding 这是我在更清楚地理解我在这个问题中想问