数组 – 如何在Perl中使用数组作为内置函数(sprintf,join等)的参
发布时间:2020-12-16 06:27:41 所属栏目:大数据 来源:网络整理
导读:我有一个如下数组: my @a = ('%d %d',10,20); 我想使用此数组的元素作为函数的参数. 如果我只是尝试直接使用它,它会在标量上下文中解释: say sprintf(@a); #= 3 我也尝试了这个,当然没有用: @_ = @a; say sprintf; #= Not enough arguments... 某些语言的
我有一个如下数组:
my @a = ('%d %d',10,20); 我想使用此数组的元素作为函数的参数. 如果我只是尝试直接使用它,它会在标量上下文中解释: say sprintf(@a); #=> 3 我也尝试了这个,当然没有用: @_ = @a; say sprintf; #=> Not enough arguments... 某些语言的splat语法在这里也不起作用(我现在只是猜测): say sprintf(*@a); #=> (error) 其他内置函数(例如join)也会出现同样的问题. 有没有办法采取任意数组(长度未知)和任意函数,并使用数组元素作为函数的参数调用函数?如果是这样,怎么样? 解决方法
sprintf有原型$@,而不是@,所以传递给它的第一个参数是在标量上下文中计算的.
用&前缀一个子呼叫忽略原型,但你必须使用内置的全名作为子调用: say &CORE::sprintf(@a); # Perl 5.16+ 或明确传递第一个参数: say sprintf($a[0],@a[1..$#a]); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |