我想知道什么\sort ...回报.
执行以下行后
my $y = \sort qw(one two three four five);
Run Code Online (Sandbox Code Playgroud)
$y是对标量的引用.我实际上期望对数组的引用:具有已排序元素的数组(五,四,一,三,二).当解除引用$y(例如print $$y)时,我得到two了排序列表的最后一个元素.
我可以用到有用的东西\sort(...)吗?
根据perldata将标量分配给值列表,将列表的最后一个值分配给标量.所以
$foo = ('cc', '-E', $bar);
Run Code Online (Sandbox Code Playgroud)
将变量的值赋给$bar标量变量$foo.
根据perlref,对枚举列表的引用与创建引用列表相同.因此,
my $y = \sort qw(one two three four five);
Run Code Online (Sandbox Code Playgroud)
相当于
my $y = \(sort qw(one two three four five));
Run Code Online (Sandbox Code Playgroud)
这相当于
my $y = \(sort qw(one two three four five))[-1];
Run Code Online (Sandbox Code Playgroud)
它将引用已排序列表的最后一个值,即标量值"two".
sort返回一个列表。
\LIST(like \($x,$y,42)) 生成另一个列表,其中包含对原始列表中每个元素的引用(\$x,\$y,\42)。
因此\sort ...返回对排序列表元素的引用。
现在在标量上下文中,$foo = LIST分配列表的最后一个元素。总而言之,
my $y = \sort qw(one two three four five);
Run Code Online (Sandbox Code Playgroud)
将对最后一个排序元素的引用分配给$y, 或
print $$y; # "two"
Run Code Online (Sandbox Code Playgroud)
我想不出该功能有什么好的用例,但这并不能很好地证明该功能不存在。
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |