这似乎是一个愚蠢的问题,但这是漫长的一天.我正在调整一些Perl代码以供其他用途,我遇到了这种语法:
my @request;
#... fill the array with stuff...
my $reply = $service->call('requestMessage' => @request, $header);
Run Code Online (Sandbox Code Playgroud)
该方法调用似乎难以置信,如果=>只是一种特殊的逗号而且@request被插入到列表中.
它实际上相当于:
my $reply = $service->call('requestMessage' => \@request, $header);
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
编辑:谢谢你的答案.我很清楚传递值和传递参考之间的区别.我问的是,一个明显的值传递是否被转换为参考传递.显然不是.谢谢大家回答.
Joh*_*usa 10
有问题的代码:
my $reply = $service->call('requestMessage' => @request, $header);
Run Code Online (Sandbox Code Playgroud)
是不相同的:
my $reply = $service->call('requestMessage' => \@request, $header);
Run Code Online (Sandbox Code Playgroud)
正如你所推测的那样,相当于:
my $reply = $service->call('requestMessage', @request, $header);
Run Code Online (Sandbox Code Playgroud)
有时,=>众所周知,"胖逗号" 用于表示位置参数之间的关系.例如,方法名称some_method与@arguments此代码中的预期名称之间的链接:
$server->distribute_across_nodes(some_method => @arguments);
Run Code Online (Sandbox Code Playgroud)
有一种观点认为=>应该被用作某种强调逗号,即使它没有任何区别.倡导者使用它来表明一件事描述或作用于另一件事,例如:
split /,/ => $var;
Run Code Online (Sandbox Code Playgroud)
也许你的代码的作者属于这个阵营?
| 归档时间: |
|
| 查看次数: |
205 次 |
| 最近记录: |