gpt4 book ai didi

perl - 是否可以在 perl 中将子例程原型(prototype)化为 $$&?

转载 作者:行者123 更新时间:2023-12-02 05:34:22 26 4
gpt4 key购买 nike

出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &

当我写作时

sub test (&$$) {
do_something;
}

并将其命名为

test {doing_something_else} 1,2;

有效。

当我这样制作原型(prototype)时

sub test ($$&) {
do_something;
}

再次称它为

test 1,2 {doing_something_else};

这是行不通的。我尝试了各种排列,但似乎没有任何效果。

我是不是遗漏了什么,或者这不可能?如果不是,为什么?

(我可能需要说明,我成功地尝试了调用 test(1, 2, sub{foo}) 的选项,当然,但它看起来不像上面最后一个示例中的选项那么吸引人(为此我什至不需要原型(prototype)设计);我希望能够实现像 if () {} else {} 等结构的语法,或者更重要的是,try () catch () {} 或 switch () case (){},但我想这就是为什么这些构造尚未在 Perl 中实现的原因)

最佳答案

& 原型(prototype)字符只有在它是原型(prototype)中的第一项时才采用 block 形式。这只是 perl 原型(prototype)解析器工作方式的一个限制。

您始终可以使用 sub 关键字来创建一个匿名子例程,该子例程在没有原型(prototype)的任何位置都可以作为参数正常工作。

test 1, 2, sub {doing_something_else};

如果你真的很想在没有 sub 但不是在第一个位置的情况下编写它,你可以玩 Devel::Declare 来为测试子例程编写你自己的解析规则(这是一个高级主题)。

关于perl - 是否可以在 perl 中将子例程原型(prototype)化为 $$&?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8364665/

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