大佬教程收集整理的这篇文章主要介绍了perl – 什么是’sub bar {{_ _ [1] => $_ [2]}}`完全可以吗?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
sub bar { +{$_[1] => $_[2]} }
我写了这个,我没有看到任何差异:
use Data::Dumper; # Not any differences here my $foo = {value => 55}; my $bar = +{value => 55}; print Dumper $foo; print Dumper $bar; # Oh ! Here there is something... sub foo { {$_[1] => $_[2]} }; sub bar { +{$_[1] => $_[2]} }; print Dumper foo('value',55); print Dumper bar('value',55);
foo返回
$VAR1 = 55; $VAR2 = undef;
酒吧回来
$VAR1 = { '55' => undef };
引用Learning Perl Objects,References & Modules
或从地图上的文档功能:
"{" starts both hash references and blocks,so "map { ..." could be either the start of map BLOCK LIST or map EXPR,LIST. Because Perl doesn't look ahead for the closing "}" it has to take a guess at which it's dealing with based on what it finds just after the "{". Usually it gets it right,but if it doesn't it won't realize something is wrong until it gets to the "}" and encounters the missing (or unexpected) comma. The syntax error will be reported close to the "}",but you'll need to change something near the "{" such as using a unary "+" or semicolon to give Perl some Help: %hash = map { "\L$_" => 1 } @array # perl guesses EXPR. wrong %hash = map { +"\L$_" => 1 } @array # perl guesses BLOCK. right %hash = map {; "\L$_" => 1 } @array # this also works %hash = map { ("\L$_" => 1) } @array # as does this %hash = map { lc($_) => 1 } @array # and this. %hash = map +( lc($_) => 1 ),@array # this is EXPR and works! %hash = map ( lc($_),1 ),@array # evaluates to (1,@array) or to force an anon hash constructor use "+{": @hashes = map +{ lc($_) => 1 },@array # EXPR,so needs # comma at end to get a list of anonymous hashes each with only one entry apiece.
以上是大佬教程为你收集整理的perl – 什么是’sub bar {{_ _ [1] => $_ [2]}}`完全可以吗?全部内容,希望文章能够帮你解决perl – 什么是’sub bar {{_ _ [1] => $_ [2]}}`完全可以吗?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。