gpt4 book ai didi

perl - 等同于 2 个子程序的最佳方法?

转载 作者:行者123 更新时间:2023-12-01 15:48:27 25 4
gpt4 key购买 nike

我有很多模块,每个模块都有子 insert_info 和子 update_info 方法。有时,sub update_info 和 sub insert_info 是相同的。但我不想在发生这种情况时只使用其中一种方法,因为通常它们是不一样的。那么如何使这两种方法相等呢?

这是唯一的方法吗?

 sub insert_info {
# code......
}

sub update_info { insert_info(); }

最佳答案

别名通过 typeglob

*update_info = \&insert_info;

添加BEGIN可以避免问题

BEGIN { *update_info = \&insert_info; }

这有助于确保它在可能调用它的其他事物之前运行。


对您的示例的评论

此外,您的 sub update_info { insert_info(); 不是副本,因为它总是调用不带参数的 insert_info。如果您向 update_info 传递了任何值(例如 update_info('someval')),它们将不会传递给 insert_info。此外,它们都是声明和定义的子例程 - 都占用内存。

如果您想按照您的方式声明它并自动将参数传递给内部函数,您可以执行 sub update_info { insert_info(@_); },或者更好的是 sub update_info { &insert_info },因为 & 没有任何参数列表,将自动传递 @_ .

这些仍然比使用顶部列出的 typeglob 分配占用更多内存。

关于perl - 等同于 2 个子程序的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18009051/

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