gpt4 book ai didi

perl - Perl 中的参数传递样式

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

我看到人们使用两种样式在 Perl 中传递命名参数:

use strict;
use warnings;
use Data::Dumper;

sub foo {
print Dumper @_;
}

sub bar {
print Dumper @_;
}

foo( A => 'a', B => 'b' );
bar( { A => 'a', B => 'b' } );

使用有什么好处 foo() 样式而不是 酒吧()风格?

最佳答案

第二种方法传递对 hash 的引用,而第一种方法只传递一个列表。

这里有两个方面:理论上,就性能而言,对哈希的引用可能会更好,但对于短参数列表,这可以忽略不计。对于像 foo(a => 1, b => 2) 这样的简单电话没有性能差异,因为 @_实际上是原始值的别名。

但是如果调用者已经在一个散列中拥有这些值,那么第一种样式需要从散列转换为列表,然后再返回到散列,这可能会很慢。

第二个方面是谁负责转换为哈希的问题。第一种风格将它留在被调用的函数中,如果那样做 my %args = @_ ,如果参数列表不是偶数长度,它会产生奇怪的警告。

这就是为什么我稍微喜欢第二种风格(或者我使用 Perl 6,它本身支持命名参数)。

关于perl - Perl 中的参数传递样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3370422/

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