gpt4 book ai didi

raku - 如何在 Perl 6 中对列表的所有元素进行功能性操作?

转载 作者:行者123 更新时间:2023-12-04 16:04:10 26 4
gpt4 key购买 nike

例如我有一个 Array与数字:

> my @a = ^5
[0 1 2 3 4]

我想打印他们的方块。我可以用 map ,但它也会返回修改后的 List (这五个 True s),这是我不想要的:

> @a.map({ put $_**2 })
0
1
4
9
16
(True True True True True)

我发现的唯一方法是使用 hyper >> :

> @a>>.&{ put $_**2 }
0
1
4
9
16


  • 语法有点笨拙(可能我没有按预期去做)
  • 如果我不希望它与 hyper 一起使用怎么办?

  • 那么正确的做法是什么呢?

    附言当然,我可以用 map然后 put结果:

    .put for @a.map: {$_**2 }

    但这不是我想要的。

    最佳答案

    使用 map为此目的很好,因为在接收器上下文中它不会产生结果列表。在 REPL 中,map 的结果是需要的,这就是为什么要生产它。但在这样的情况下:

    @a.map({ put $_**2 });
    say "That's all, folks";

    那么 map的结果不需要,因此不会组装结果列表。如果想真正说明这一点,可以这样写:
    sink @a.map({ put $_**2 })

    请注意,例程中的最后一条语句被视为隐式返回值。使用 --> Nil将足以确保最终 map而是在接收器上下文中。
    sub put-squares(@a --> Nil) {
    @a.map({ put $_**2 })
    }

    关于raku - 如何在 Perl 6 中对列表的所有元素进行功能性操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52531702/

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