gpt4 book ai didi

raku - perl6 占位符变量和主题变量

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

Perl 6中既有占位符变量,也有主题变量,例如下面两条语句是一样的

say ( $_ * 2 for 3, 9 );        # use topic variables                 
say ( { $^i * 2 } for 3, 9 ); # use placeholder variables

在我看来,从主题变量中获得的唯一好处是节省了一些键盘敲击。

我的问题是:是否有一个用例,主题变量比占位符变量更方便?

最佳答案

有几个主题变量,每个 sigil 一个:$、@、%_ 甚至 &_(是的,例程在 Perl6 中是一等公民)。在某种程度上,您还可以使用Whatever (*) 并在表达式中创建一个WhateverCode,从而节省更多的输入(看,妈!没有花括号!)。

您可以将数组形式用于多个变量:

my &block = { sum @_ }; say block( 2,3 )

但是它们的主要问题是它们是单个变量,无法反射(reflect) block 调用的复杂性。上面的代码可以使用如下的占位符变量重写:
my &block = { $^a + $^b }; say block( 2,3 )

但是想象一下,你手中有一些不可交换的东西。像这儿:
my &block = { @_[1] %% @_[0] }; say block( 3, 9 )

这变得笨拙且缺乏表现力
my &block = { $^divi %% $^divd }; say block( 3, 9 ); # OUTPUT: «True␤»

这里的诀窍是占位符变量按字母顺序分配,divd 在 divi 之前,divi 是 divisible 的缩写,divd 是 split 的缩写(如果你愿意,你应该使用它)。

归根结底,有很多方法可以做到这一点。你可以使用任何你想要的。

关于raku - perl6 占位符变量和主题变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56002598/

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