为 Dart 编写一个 sortBy 函数

Writing a sortBy function for Dart

我正在尝试编写一个实用程序函数,按给定的 属性:

对列表进行排序
List<T> sortBy<T, U extends Comparable<U>>(List<T> items, U Function(T item) f) =>
    items.toList()..sort((item1, item2) => f(item1).compareTo(f(item2)));

当 属性 是一个整数时,我 运行 遇到了问题,例如

sortBy<String, int>(['apple', 'ball', 'cow'], (word) => word.length);

我遇到编译错误:

error: 'int' doesn't extend 'Comparable<int>'.

为什么 int 不是 Comparable?有没有另一种写 sortBy 的方法,这样它既适用于 int 也适用于 Comparable

int 确实实现了 Comparable 但实现了 Comparable<num>,这是你的问题,因为你想检查 Comparable<int>。你能不能像这样定义sortBy?

List<T> sortBy<T, U extends Comparable>(List<T> items, U Function(T item) f) =>
    items.toList()..sort((item1, item2) => f(item1).compareTo(f(item2)));

这似乎可行,因为我们现在只想确保 U 扩展 Comparable