我有这个

var nlist = [4,2,1,5];
var compare = (a, b) => a.compareTo(b);
nlist.sort(compare);
print(nlist);        // [1,2,4,5]

在这里(我将(b, a)更改为(a, b))

var nlist = [4,2,1,5]
var compare = (b, a) => a.compareTo(b);
nlist.sort(compare);
print(nlist);        // [5,4,2,1]

为什么这个小的修改会从升序更改为降序?

最佳答案

您对更改后的实际期望会很有趣。

比较取决于第二个参数是否大于第一个参数或+1(如果相等),返回0-10。当您交换两个参数时,+1变为-1,反之亦然,这导致了降序而不是升序。

1.compareTo(2)

返回-1

print(nlist.sort((a, b) => a.compareTo(b)));

按升序打印列表元素,因此是默认设置。

关于sorting - 在Dart中按升序和降序排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27897932/

10-10 15:57