gpt4 book ai didi

perl - 为什么@array ~~ LIST 返回false,即使@array 包含与LIST 相同的元素?

转载 作者:行者123 更新时间:2023-12-03 18:10:11 24 4
gpt4 key购买 nike

我有

@a = (1,2,3); print (@a ~~ (1,2,3))


@a = (1,2,3); print (@a == (1,2,3))

第一个是我希望工作的,但它不打印任何东西。第二个确实打印 1。

为什么?不是智能匹配算子 ~~应该在 @a ~~ (1,2,3) 的情况下匹配?

最佳答案

一秒钟,让我们考虑略有不同

\@a ~~ (1,2,3)
~~在标量上下文中评估它的参数,所以上面的和
scalar(\@a) ~~ scalar(1,2,3)
  • \@a (在任何上下文中)返回对 @a 的引用.
  • 1, 2, 3在标量上下文中类似于 do { 1; 2; 3 } , 返回 3 .

  • 所以减去几个警告*,上面等价于
    \@a ~~ 3

    你真正想要的是
    \@a ~~ do { my @temp = (1,2,3); \@temp }

    可以缩短为
    \@a ~~ [ 1,2,3 ]

    最后是 ~~的魔力允许 \@a写成 @a ,这样可以进一步缩短为
    @a ~~ [ 1,2,3 ]

    * — 始终使用 use strict; use warnings; !

    关于perl - 为什么@array ~~ LIST 返回false,即使@array 包含与LIST 相同的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9437453/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com