以散列形式传递参数

ZDNet软件频道 时间:2004-02-03 作者:ZDNet China |  我要评论(9)
本文关键词:
如果你的子程序有很多的可选参数,那么请考虑一下将这些参数用散列形式作为关键字-值(key-value)对来传递吧。
本文译自Builder.com,未经许可请勿转载

如果你的子程序有很多的可选参数,那么请考虑一下将这些参数用散列形式作为关键字-值(key-value)对来传递吧。

例如,假设你有一个子程序,它被用来接收URL和一些可选的参数,例如调试标记、超时、最大深度,以及冗长程度等。如果使用传统的过程编程语言的话,你会看到下面这样的命令:

func(url, debug, timeout, depth, verbose);

在这个模型里,为了传递一个用于深度参数的值,你必须传递一个用于调试和超时参数的值。如果使用Perl的话,你可以把所有的参数组合成一个散列,并且只需要传递那些你感兴趣的(参数)。

下面是Perl里的同一个函数,它把可选参数用散列的形式来传递:

func("http://www.builder.com", debug=>1, verbose=>0, depth=>2);

sub func
{
    my ($url, %params) = @_;

    print "URL: $url ";
    for $item (sort keys %params)
    {
        print "$item: $params ";
    }
}

使用散列参数传递这种方法,让你能够添加新的参数而不需要更改原有的代码。在你不需要或者不想知道参数是什么的时候,这种方法也会很有用。例如,如果你的“pass-through”函数是用于另一个函数或者对象的包装器,你的代码可以允许调用者传递参数,这些参数被发送到包装函数,而调用者并不不知道它们是什么。

使用散列把参数传递给子程序要容易得多。


James Brown具有20年的行业开发专长和经验,拥有多重工作背景,包括数字硬件设计,网络操作系统开发和分布式计算等。




责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134