当前位置: 首页 > 知识库问答 >
问题:

嵌套列表的Perl 6 assignment hyper运算符未按预期工作

茅星雨
2023-03-14

您好,我正在尝试在Perl 6中使用赋值超运算符https://docs.perl6.org/language/operators#Hyper_operators

my (@one, @two) «=» (<1 2 3>,<4 5 6>);
say @one;
say @two;
# Prints nothing (empty array)

# Expected behaviour:
@one=<1 2 3>;
@two=<4 5 6>;
say @one;
say @two;
# Prints [1 2 3] and [4 5 6]

如何使赋值超运算符正确运行?谢谢

共有1个答案

沃宇
2023-03-14

你很接近。在我们找到的文档中再进一步一点

zip元运算符(与Z不同)将把给定的中缀运算符应用于从其参数中取一左一右的对。

所以

my (@one, @two) Z= <1 2 3>, <4 5 6>;

这是一个在当前开发人员构建上运行的基准测试。它将上面的“神奇”变体与两个顺序分配进行比较。

use v6;
use Benchmark;

my %results = timethese(100000, {
    "magic" => sub { my (@one, @two) Z= <1 2 3>, <4 5 6> },
    "plain" => sub { my @one = <1 2 3>; my @two = <4 5 6> },
});

say ~%results;

# magic   1569668462 1569668464 2 0.00002
# plain   1569668464 1569668464 0 0
 类似资料:
  • 问题内容: 为什么要打印? 以我的理解,它应该打印。 为什么它没有按预期工作? 问题答案: 因为您编写的内容与以下内容相同: 如您所知1被评估为。 您期望的是: 因此,请始终使用大括号以避免此类混淆。 正如已经写过的,三元表达式在PHP中是关联的。这意味着首先将执行从 左边开始 的第一个,然后是第二个,依此类推。

  • 我正在使用spring Roo并希望访问Controller类中的一个bean,该类在ApplicationContext.xml中具有以下配置: 配置类本身是: 在我的Controller中,我认为一个简单的Autowired注释应该可以完成这项工作 在启动过程中,spring在setSkipWeeks方法中打印消息。不幸的是,每当我在控制器中调用config.getSkipWeeks()时,它

  • 当我运行以下程序时,它只打印 然而,从Java 8的equalsIgnoreCase文档中我们发现: 如果以下至少一项为真,则两个字符c1和c2被视为相同的忽略情况: •对每个字符应用java.lang.character.ToUpperCase(char)方法会产生相同的结果 所以我的问题是为什么这个程序不打印 在这两种操作中,都使用了大写字符。

  • 我试图使用来传输我根据前面的问题设置的自定义标头。 我在文件中读到... 我的属性包括:

  • 我正在和selenium一起工作,刮一些数据。 有一个按钮在页面上,我正在点击说“Custom_Cols”。这个按钮为我打开了一个窗口,我可以在那里选择我的列。 我的问题是为什么新窗口上的元素不可见,即使我正在等待元素的可见。补充一下,我已经尝试增加延迟时间,但我还是会偶尔出现这个错误。 我的密码在这里