在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的调用修改了其参数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |