为 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
。
我正在尝试编写一个实用程序函数,按给定的 属性:
对列表进行排序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
。