加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Perl中有更好的方法通过引用传递吗?

发布时间:2020-12-15 21:58:19 所属栏目:大数据 来源:网络整理
导读:我正在做像这样的传递: use strict;use warnings;sub repl { local *line = $_[0]; our $line; $line = "new value";}sub doRepl { my ($replFunc) = @_; my $foo = "old value"; $replFunc-($foo); print $foo; # prints "new value";}doRepl(repl); 这
我正在做像这样的传递:
use strict;
use warnings;

sub repl {
    local *line = $_[0]; our $line;
    $line = "new value";
}

sub doRepl {
    my ($replFunc) = @_;
    my $foo = "old value";
    $replFunc->($foo);
    print $foo; # prints "new value";
}

doRepl(&;repl);

这样做有更清洁的方法吗?

原型不起作用,因为我正在使用函数引用(相信我有一个使用函数引用的充分理由).

我也不想在repl中使用$_ [0]因为它很难看.

解决方法

你看过 Data::Alias吗?它允许您使用干净的语法创建词法范围的别名.

您可以使用它来创建像这样的传递引用语义:

use strict;
use warnings;

use Data::Alias;

sub foo {
    alias my ($arg) = @_;
    $arg++;
}

my $count = 0;

foo($count);

print "$countn";

输出为1,表示对foo的调用修改了其参数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读