gpt4 book ai didi

perl - 我应该如何将对象传递给子程序?

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

其中之一是最好的方法还是最坏的方法?

利用范围:

my $cache = CHI->new( driver => 'File', expires_in => 3600 );

sub one {
if ( my $data = $cache->get( 'key_one' ) ) {
# ...
}

sub two {
if ( my $data = $cache->get( 'key_two' ) ) {
# ...
}

将对象作为参数传递:
my $cache = CHI->new( driver => 'File', expires_in => 3600 );

sub one {
my ( $cache ) = @_;
if ( my $data = $cache->get( 'key_one' ) ) {
# ...
}

sub two {
my ( $argument1, $cache ) = @_;
if ( my $data = $cache->get( 'key_two' ) ) {
# ...
}

或在子程序中创建一个新实例:
sub one {
my $cache = CHI->new( driver => 'File', expires_in => 3600 );
if ( my $data = $cache->get( 'key_one' ) ) {
# ...
}

sub two {
my $cache = CHI->new( driver => 'File', expires_in => 3600 );
if ( my $data = $cache->get( 'key_two' ) ) {
# ...
}

最佳答案

首选使用全局变量,没那么热。第三个选择是很多额外的开销。也不是很好,所以我想在你的问题的背景下,中间的选择更可取。一个更广泛的问题是为什么子程序根本需要知道缓存?看来他们只担心数据。我会考虑获取数据并将其传递给子程序,在那里他们不必担心它是被缓存还是刚刚创建。

关于perl - 我应该如何将对象传递给子程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9683370/

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