gpt4 book ai didi

raku - 在分配给它之前在 Perl 6 程序中使用变量

转载 作者:行者123 更新时间:2023-12-04 22:27:55 25 4
gpt4 key购买 nike

我想用我的程序为文件末尾的一些变量分配文字,但要更早地使用这些变量。我想出的唯一方法如下:

my $text;

say $text;

BEGIN {
$text = "abc";
}

有没有更好/更惯用的方式?

最佳答案

只是去功能。

改为创建子程序:

say text();

sub text { "abc" }



更新(感谢 raiph!纳入您的反馈,包括使用 term:<> 的引用):

在上面的代码中,我最初省略了调用 text 的括号,但始终包含它们以防止解析器误解我们的意图会更易于维护。例如,
say text();          # "abc" 
say text() ~ text(); # "abcabc"
say text; # "abc", interpreted as: say text()
say text ~ text; # ERROR, interpreted as: say text(~text())

sub text { "abc" };

为避免这种情况,您可以将 text 设为 term ,这有效地使裸字 text 的行为与 text() 相同:
say text;        # "abc",    interpreted as: say text() 
say text ~ text; # "abcabc", interpreted as: say text() ~ text()

sub term:<text> { "abc" };

对于编译时优化和警告,我们还可以向其中添加 pure trait(感谢 Brad Gilbert!)。 is pure 断言对于给定的输入,函数 "always produces the same output without any additional side effects" :
say text;        # "abc",    interpreted as: say text() 
say text ~ text; # "abcabc", interpreted as: say text() ~ text()

sub term:<text> is pure { "abc" };

关于raku - 在分配给它之前在 Perl 6 程序中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49175621/

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