分配给列表容器的混乱

2024-01-03

我可能患有大脑衰退,但根据有关项目和列表分配的文档(https://docs.raku.org/language/variables#Item_and_list_assignment https://docs.raku.org/language/variables#Item_and_list_assignment ),

对列表容器(列表上下文)的分配始终会触发列表分配。

然而,这似乎与我从代码中得到的内容相冲突(此处在 raku repl 中复制)。

> my %syns-by-name = %(Bq => ["Bq", "becquerel", "becquerels"], C => ["C", "coulomb", "coulombs"],)
    {Bq => [Bq becquerel becquerels], C => [C coulomb coulombs]}
> my Str @res = %syns-by-name{'Bq'};
    Type check failed in assignment to @res; expected Str but got Array (["Bq", "becquerel", ...) in block <unit> at <unknown file> line 1
> my Str @res = [|%syns-by-name{'Bq'}];
    [Bq becquerel becquerels]

这是一个错误,还是我误解了意图......?

Welcome to ????????????????????????™ v2020.10.
Implementing the ????????????????™ programming language v6.d.
Built on MoarVM version 2020.10.

TL;DR If a non-native item is mutable via assignment, it's a Scalar. List assignment does not flatten Scalar items. [1]

一个暗示

考虑这段代码:

my %map = :a;
%map<a> = 42;
say %map<a>; # 42

该作业之所以有效,是因为:

say %map<a>.VAR.WHAT; # (Scalar)

“列表分配”

考虑这段代码:

my $scalar = 1,2;       # Useless use of constant integer 2
say $scalar;            # 1

my @list1 = 1,2;        # "list assignment", so RHS is iterated
say @list1;             # [1 2]

这就是项目分配和列表分配之间的区别之一。

my @list3 = [1,2];      # Again, RHS is iterated
say @list3;             # [1 2]

my @list2 = (1,2);      # Again, RHS is iterated
say @list2;             # [1 2]

my @list4 = 1,(2,3);    # Again, RHS is iterated. Second element stays as a `List`.
say @list4;             # [1 (2 3)]

my @list5 = 1,[2,3];    # Again, RHS is iterated. Second element stays as an `Array`.
say @list5;             # [1 [2 3]]

如果 RHS 上只列出了一项,这不是一个Scalar,列表分配将其展平。但在所有其他情况下,列表分配不会展平项目。

my @list6 = $[1,2];     # RHS is a `Scalar`. So it doesn't get flattened.
say @list6;             # [[1 2]]

我很困惑!

高尔夫Q中的情况:

my Str @res = %( :a[42,99] )<a>;

这会产生同样类型的错误。

Because:

say .VAR.WHAT given :a[42,99]<a>;       # (Array)
say .VAR.WHAT given (% = :a[42,99])<a>; # (Scalar)

脚注

[1] When surmise yields surprise, and you turn that into learning, you realize and idealize your investment in ERN https://en.wikipedia.org/wiki/Error-related_negativitying.

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

分配给列表容器的混乱 的相关文章

随机推荐

  • 如何对守护程序进行内存检查?

    我编写了一个 C 应用程序 它会永远运行直到手动终止 它监视其他重要的应用程序 因此 我的守护进程应用程序不应停机 记住这一点 我想看看我的应用程序中是否存在内存泄漏 我使用了 valgrind 但由于该应用程序永远运行 因此 valgri
  • 将嵌套文件夹内容递归复制到一个文件夹(终端)

    我有一个 WordPress 上传文件夹 该文件夹使用子文件夹构建了几个月 wolfr2 uploads wolfr tree 2007 08 beautifulkatamari jpg beautifulkatamari thumbnai
  • boost::bind 何时将参数强制转换为所需类型?

    当我使用 boost bind 将参数绑定到函数时 它们何时被转换为函数所需的类型 如果可以隐式转换 它们如何存储在bind t对象中 作为最初传递给绑定的类型还是作为函数签名所需的类型 具体来说 如果我有签名的功能 void SomeFu
  • 如何使用 python 发送 AT GSM 命令?

    如何使用 python 发送 AT GSM 命令 我能够使用 Delphi 和一些 comport 组件 TComport 很容易地做到这一点 但是我如何使用 python 与我的调制解调器对话 Gath 我用 pyserial 这样做 i
  • 上传某些文件时$_FILES和$_POST数据为空

    我注意到 根据我上传的视频 有时整个 POST and FILES数组将为空 这是一个奇怪的现象 但我在一些视频中发现了它 为了测试 我使用的视频全部是video mp4文件类型
  • Cross-Origin Read Blocking (CORB) 阻止跨源

    Error 请求的资源上不存在 Access Control Allow Origin 标头 起源 https abcd com https abcd com 因此不允许访问 响应的 HTTP 状态代码为 403 每当我尝试从 Angula
  • 注销时不转到上一页

    我有一个jsp项目 我使用会话来获取用户权限 我用过 session invalidate 在注销页面中 注销后 当我按后退按钮时 它会显示上一页 我不希望它这样做 请在这件事上给予我帮助 您可以将 html 上的缓存设置为在注销确认页面上
  • 从字符串中获取转义的 unicode 代码

    我似乎遇到了与开发界其他人相反的问题 我需要从字符串生成转义字符 例如 假设我有这个词MESSAGE 我需要生成 u004D u0045 u0053 u0053 u0041 u0047 u0045 u003A u0053 u0069 u00
  • 查找 PostgreSQL 中不为 NULL 的列

    我为每个表分配了一个任务来计算可为空的列 简单的 SELECT table name count FROM INFORMATION SCHEMA COLUMNS WHERE is nullable NO GROUP BY table nam
  • 如何使用 SQLAlchemy 声明式创建复合列?

    我经常用Text保存 Markdown 格式的富文本的列 我的模型看起来像这样 class Document Base id Column Integer primary key True title Column Unicode 250
  • gzipped json 与高效二进制序列化的性能

    JSON 和 Gzip 是序列化数据的简单方法 这些在编程语言中广泛实现 而且这种表示形式可以跨系统移植 是吗 我的问题是 与非常高效的二进制序列化方法相比 json gzip 是否足够好 成本低于 2 倍 我正在寻找序列化各种数据时的空间
  • 未使用 v0 的“vperm v0,v0,v0,v17”有何作用?

    我正在研究一个SHA 256 实施 https github com noloader SHA Intrinsics blob master sha256 p8 cxx using Power8 内置 https github com no
  • 如何处理支持/设计库的新底页问题?

    背景 我使用了修改后的版本底页 https www google com design spec components bottom sheets html图书馆 here https github com AndroidDeveloper
  • Doxygen:如何记录 PHP 常量?

    如何记录 PHP 常量 define SOME CONSTANT constant value 与多氧 只需在常量上方包含一个文档块即可define 函数调用或const像这样的关键字
  • Access SQL 查询缺少更多必需参数

    在一个网络项目中 我尝试执行以下查询 SELECT ItemName as Name ItemPicture as Picture ItemHeroModif as Assistance ItemTroopModif as Charisma
  • 检测并防止/延迟Windows移动电源关闭

    我有一个窗口移动应用程序 需要在设备关闭之前检测电源关闭并执行一些操作 我已经能够使用 RequestPowerNotifications win32 api 的 pinvoke 检测到设备正在关闭 但是我不知道如何长时间关闭电源来运行我的
  • 如何将 Windows 网络路径与 Git Bash 结合使用

    网络资源的路径在 Windows 中用 servername share path to folder句法 如何在 Git Bash 中使用这样一个使用 Unix 风格路径的文件夹 其实只是cd servername share path
  • 有没有办法禁用所有这些到包目录的符号链接?

    我按照本指南使用 Dart Eclipse 插件 http blog dartwatch com 2013 01 integrating dart into eclipse and your html http blog dartwatch
  • 在许多不同的数据中重复某个功能

    我正在用 Haskell 编写一个编译器 所以我们有一个lot 或者至少对我来说似乎很多 of datas 和构造函数 如下所示 data DataType Int Float Bool Char Range Type String Wid
  • 分配给列表容器的混乱

    我可能患有大脑衰退 但根据有关项目和列表分配的文档 https docs raku org language variables Item and list assignment https docs raku org language v