我有这个
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
,-1
和0
。当您交换两个参数时,+1
变为-1
,反之亦然,这导致了降序而不是升序。
1.compareTo(2)
返回
-1
和print(nlist.sort((a, b) => a.compareTo(b)));
按升序打印列表元素,因此是默认设置。
关于sorting - 在Dart中按升序和降序排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27897932/