Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了我想在Perl中排列数组,但是结果并不排序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个数组,我想排序.数组A的每个元素都是一个有3个元素的数组.
阵列A看起来像: @H_413_3@my @A = ([2,3,1],[1,2,3],2],[3,1,[2,4]);

我想按顺序排列A.当比较2个元素时,使用第一个数字.如果有领带,则使用第二个数字,然后是第三个数字.

这是我的代码我使用函数’cmpfunc’来比较2个元素.

sub cmpfunc {
    return ($a->[0] <=> $b->[0]) or 
           ($a->[1] <=> $b->[1]) or
           ($a->[2] <=> $b->[2]);
}
my @B = sort cmpfunc @A;
print "Result:\n";
for my $element (@B) {
    print join(",",@{$element}) . "\n";
}

结果:

1,3
1,2
2,1
2,4
3,2

结果有点分类,但不正确.我期待的是:

1,2
1,3
2,4
2,1
3,2

我的比较功能有什么错误吗?
奇怪的是,当我将比较代码放在块中时,结果被正确排序.

@H_413_3@my @C = sort { ($a->[0] <=> $b->[0]) or ($a->[1] <=> $b->[1]) or ($a->[2] <=> $b->[2]) } @A;

解决方法

你正在执行
return ($a->[0] <=> $b->[0])

它在它到达任何“或”子句之前返回.

删除“返回”关键字,或者在整个参数列表中添加括号,以返回:

sub cmpfunc {
    return(($a->[0] <=> $b->[0]) or
           ($a->[1] <=> $b->[1]) or
           ($a->[2] <=> $b->[2]));
}

大佬总结

以上是大佬教程为你收集整理的我想在Perl中排列数组,但是结果并不排序全部内容,希望文章能够帮你解决我想在Perl中排列数组,但是结果并不排序所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。