【问题标题】:get arguments passed to a function as a hash获取作为哈希传递给函数的参数
【发布时间】:2014-05-27 17:00:30
【问题描述】:

我想知道是否可以将传递给函数的参数作为哈希值。

我试过这样:

my %hash = @_;

在我得到一个数组的情况下工作,但是键是奇数变量值,值是偶数变量值。

我希望键是变量的名称,所以如果我调用

foo($bar, %example);

哈希将有一个值为 $bar 的键栏

(%example 也是如此)。

这是可能的还是必须在调用函数之前创建哈希?

【问题讨论】:

  • 哈希是某种意义上的数组,其中奇数元素是键,偶数元素是它们的值。 @_ 是一个数组(正如 @ 告诉你的那样),当你将它分配给一个哈希变量时,所发生的就是你所描述的。您可以或者将子称为foo( key => 'value', ... ) 使用@_my ( $scalar, %hash ) = @_(以匹配您的示例)。
  • foo($bar, %example); 总是会产生奇数个元素。是什么让你的想法与众不同?

标签: perl


【解决方案1】:

在某种程度上,它可以用 PadWalker 来完成。这不是您想要在开发工具之外做的事情。

但是这个概念没有意义。这意味着你必须这样做

my $bar = 4;
foo($bar, %example);

而不是

foo(4, %example);

坚持

foo(bar => $bar, %example);

foo(bar => $bar, example => \%example);

(取决于你想要什么)。

【讨论】:

    猜你喜欢
    • 2012-05-18
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多